我有一個主窗口應用程序,它有一堆控件,包括空格鍵,這個控件由一個叫做onSpacebar()
的簡單方法處理。在主窗口的頂部,我有一個持續的無模式對話框。 無論對話框是否有焦點,或者主窗口都有焦點,我需要空格鍵的行爲方式完全相同。無模式對話框鍵盤處理(winapi)
此對話框由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
是爲了響應空格鍵按鍵。
你'cout'消息很可能是顯著更深入,如果你嘗試打印* *的東西,除了極消息處理程序部分,你只要把它的名字。也許NMHDR的'code'成員可能會提供一些線索照亮你懷疑的鍵盤通知,特別是如果你真的*顯示*它讓你知道它是什麼。 – WhozCraig 2013-03-13 10:58:25