我想知道当子窗口(如“编辑”或“按钮”)有焦点时按下的虚拟键的值。
怎么做?

最佳答案

一种方法是

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控件的窗口过程,该窗口过程反过来调用原始窗口过程。

关于c - 如何在WS_CHILD中获取WM_KEYDOWN的virtkey值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1842231/

10-11 00:49