首先在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消息了
本文详细介绍了在C++应用程序中如何通过句柄管理实现对话框获取键盘按下WM_KEYDOWN消息的过程,包括CXXAPP类和CXxDlg类中的关键函数调用。
消息&spm=1001.2101.3001.5002&articleId=6716764&d=1&t=3&u=da12f65c3ddd437184282dfec3601d05)
526

被折叠的 条评论
为什么被折叠?



