我有一个带有一个主窗口的应用程序,它有一堆控件,包括空格键,它由一个名为onSpacebar()
. 在那个主窗口的顶部,我有一个持久的无模式对话框。我需要空格键的行为完全相同,无论对话框是否具有焦点,或者主窗口是否具有焦点。
这个对话框由一个看起来像这样的 DialogProc 支持:
BOOL CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_NOTIFY:
std::cout<< "WM_NOTIFY" <<std::endl;
switch(LOWORD(wParam))
{
// which component caused the message?
case COMP_TREE:
if(((LPNMHDR)lParam)->code == NM_DBLCLK){
onDoubleclk()
}
//...
break;
// other components...
}
break;
case WM_CLOSE:
// the dialog can only be closed when the whole app is closed
//EndDialog(hDlg, IDCANCEL);
return TRUE;
case WM_DESTROY:
PostQuitMessage(0);
return TRUE;
}
return FALSE;
}
根据我收集的信息,我应该onSpacebar()
从 DialogProc 中调用我的方法,类似于我处理双击的方式。我可以看到WM_NOTIFY
按下空格键时对话框收到了该消息(短语 WM_NOTIFY 打印到 cout),但我似乎无法将空格键通知与对话框收到的其他众多通知区分开来。
请告诉我如何识别特定WM_NOTIFY
是对空格键按键的响应。