|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
WinAPI не обрабатывать нажатия клавиш на форме
Доброго времени суток.
приложение полностью на winapi, Имею пустую форму, которая создается из ресурсов через DialogBox. обработка нажатий клавиш происходит в отдельном потоке через GetKeyState. Получается такая ситуация, нажатия обрабатываются корректно, но когда нажимаешь несколько кнопок сразу или нажимаешь что-то отличное от стрелок, происходит звук типа неверно нажатой клавиши. вопрос : как отключить "стандартный" обработчик нажатий, чтоб не "пикало" при нажатиях? Програмистами не рождаются, ими становятся! |
#2
|
||||
|
||||
Например, зарегистрировать свою WndProc и по нажатию кнопок не вызывать стандартный обработчик, а просто выходить?
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
||||
|
||||
wndproc есть,
типа отлавливать сообщеньки wm_keydown, keyup , keypress и повесить на них тупо exit. или вообще из wndproc выкинуть в конце defaultwndproc ... попробую. Програмистами не рождаются, ими становятся! |
#4
|
||||
|
||||
DefWindowProc вызывать по событиям клавы не нужно - это стандартный обработчик. Но если просто выкинуть, то отвалятся вообще все сообщения.
jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
||||
|
||||
Цитата:
Код:
function MainDlgFunc(hWnd : LongWord; uMsg : LongWord; wParam, lParam : Integer) : LongBOOL; stdcall; begin Result := TRUE; case uMsg of $0110 : begin GetFullScreen(32); resize(hwnd); GamesThread := TGameThread.Create(hWnd); // WM_INITDIALOG: end; $0002, // WM_DESTROY $0010 : FreeAll; // WM_CLOSE $0111: case wParam of // WM_COMMAND 101: FreeAll; end; else Result := FALSE; end; end; begin DialogBox(hInstance, PChar(RC_FORM), 0, @MainDlgFunc); end. Даже дефолтный не вызываю,.. при этом всё работает, но все-равно пикает. Програмистами не рождаются, ими становятся! Последний раз редактировалось SCrat.ORS, 27.04.2017 в 11:58. |
#6
|
||||
|
||||
А, так это не просто окно, это DialogBox. Не заметил сразу.
Цитата:
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 27.04.2017 в 16:03. |
#7
|
||||
|
||||
Если просто вернуть ТРУ, то да, обработчик не вызывается, но она один фиг пикает.
ЗЫ. Я перерыл в обработчике вообще все сообщения, и нет ниодного, которое бы срабатывало при нажатии клавиши. Похоже сабака порылась где-то совершенно в другом месте. Програмистами не рождаются, ими становятся! Последний раз редактировалось SCrat.ORS, 28.04.2017 в 14:37. |