首先在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消息了