您的位置:首页 > 其它

如何使对话框捕获按键按下(WM_KEYDOWN)消息

2011-08-24 23:27 274 查看
首先在CXXAPP 类中定义一个句柄 HWND m_hwndDlg; 在CXXAPP类的InitInstance()函数中将此句柄初始化为 m_hwndDlg=NULL; 同时在ProcessMessageFilter()函数中定义如下

BOOL CXXApp::ProcessMessageFilter(int code, LPMSG lpMsg)

{

if(m_hwndDlg!=NULL)

{

if(lpMsg->hwnd==m_hwndDlg || ::IsChild(m_hwndDlg,lpMsg->hwnd))

{

if(lpMsg->message==WM_KEYDOWN)

{

AfxMessageBox("keydown");

}

}

}

return CWinApp::ProcessMessageFilter(code, lpMsg);

}

在CXxDlg类的OnInitDialog()函数return之前加入 ((CMy420dlgApp*)AfxGetApp())->m_hwndDlg=m_hWnd;

在CXxDlg类的OnDestroy()函数中加入 ((CMy420dlgApp*)AfxGetApp())->m_hwndDlg=NULL;

这样既可使对话框获取键盘按下WM_KEYDOWN消息了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: