Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2010, 23:39   #1
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию Delphi win32 api отловить нажатие кнопок

Собственно вот код программы
Код:
Program Api;
uses
  windows,
  messages;

var
window:TWndClassEx;
Mwindow: HWND;
Mmsg: MSG;
Msg:TMsg;
Handled: Boolean;

// Процедура обработки сообщений
function WindowProc (wnd: HWND; msg: integer; wparam: WPARAM; lparam: LPARAM):LRESULT;STDCALL;
begin
case msg of
WM_Destroy:
begin
PostQuitMessage (0);
Result := 0;
Exit;
end;
else
Result := DefWindowProc(wnd,msg,wparam,lparam);
end;
end;

// Ристрация класса окна
begin
window.cbSize := sizeof (window);
window.style := CS_HREDRAW or CS_VREDRAW;
window.lpfnWndProc := @WindowProc;
window.cbClsExtra := 0;
window.cbWndExtra := 0;
window.hInstance := HInstance;
window.hIcon := LoadIcon (0,IDI_APPLICATION);
window.hCursor := LoadCursor (0,IDC_ARROW);
window.hbrBackground:=Color_BtnFace+12;
window.lpszMenuName := nil;
window.lpszClassName := 'Main_Window';
RegisterClassEx (window);
// Создание окна на основе созданного класса
Mwindow := CreateWindowEx(0,'Main_Window','by_revaldo666', WS_OVERLAPPEDWINDOW,100,100,300,300,0,0,Hinstance,nil);
// Показать созданное окно
SHOWWINDOW (Mwindow,SW_Show);


// Цикл обработки сообщений
while GetMessage (Mmsg,0,0,0) do
begin
TranslateMessage (Mmsg);
DispatchMessage (Mmsg);

end;

end.
Нужно что в окне определялось какая клавиша была нажата.(Собственно задание: создать окно, отловить нажатие клавиш, мыши)
Подскажите как это сделать...знаю что по средством WM_keyup/Keydown
а вот как именно незнаю...

Последний раз редактировалось revaldo666; 05.07.2010 в 23:51.
revaldo666 вне форума Ответить с цитированием
Старый 06.07.2010, 00:33   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Код:
// Цикл обработки сообщений
while GetMessage (Mmsg,0,0,0) do
begin
TranslateMessage (Mmsg);
DispatchMessage (Mmsg);
  if Mmsg.message=wm_LButtonDown then
    windows.MessageBox(0, 'левая', '', 0);
  if Mmsg.message=wm_RButtonDown then
    windows.MessageBox(0, 'правая', '', 0);
  if Mmsg.message=wm_KeyDown then begin
    str(Mmsg.wParam, s);
    windows.MessageBox(0, pchar(s), '', 0);//виртуальный код клавиши
  end;
end;
http://msdn.microsoft.com/en-us/libr...81(VS.85).aspx
eoln вне форума Ответить с цитированием
Старый 06.07.2010, 01:14   #3
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

спасибо разобрался
revaldo666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Win32 Api revaldo666 Win Api 10 06.07.2010 00:48
Простые числа в Win32 APi asd874 Помощь студентам 0 23.05.2010 00:02
[Win32 API/Delphi] Нужна помощь с combobox ereality Win Api 8 07.11.2009 22:48
Win32 Api! alexov Общие вопросы C/C++ 7 09.02.2009 22:25
Что такое Win32 API Slovinsky Свободное общение 10 29.10.2007 10:46