Как получить значение virtkey для WM_KEYDOWN в WS_CHILD? - PullRequest
1 голос
/ 03 декабря 2009

Я хочу знать значение виртуальной клавиши, нажатой, когда дочернее окно (например, «редактировать» или «кнопка») имеет фокус. Как это сделать?

Ответы [ 3 ]

1 голос
/ 03 декабря 2009

Ну, одним из способов является использование

WNDPROC g_OldProc;

LRESULT CALLBACK MyEditWindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    if ( uMsg == WM_KEYDOWN )
    {
         // Handle key down.
    }
    return g_OldProc( hwnd, uMsg, wParam, lParam );
}

тогда в какой-то подходящий момент

g_OldProc = (WNDPROC)GetWindowLongPtr( hEdit, GWLP_WNDPROC );
SetWindowLongPtr( hEdit, GWLP_WNDPROC, (LONG_PTR)MyEditWindowProc );

Это заменит оконную процедуру элемента управления hEdit вашей собственной оконной процедурой, которая, в свою очередь, вызывает исходную оконную процедуру.

0 голосов
/ 03 декабря 2009

Вы можете использовать GetKeyState Win32 API из обработчика WM_SETFOCUS .

0 голосов
/ 03 декабря 2009

Вы можете перехватить их на уровне цикла сообщений (перед вызовом DispatchMessage). Противно, но сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...