我想知道当子窗口(如“编辑”或“按钮”)具有焦点时按下虚拟键的值。
怎么做?
答案 0 :(得分:1)
一种方法是使用
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控件的窗口过程,而窗口过程又调用原始窗口过程。
答案 1 :(得分:0)
您可以在消息循环级别捕获它们(在调用DispatchMessage之前)。讨厌,但会工作。
答案 2 :(得分:0)
您可以在GetKeyState处理程序中使用WM_SETFOCUS Win32 API。