如何使对话框捕获按键按下(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消息了
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消息了
相关文章推荐
- 孙鑫VC++深入详解:Lesson8 Part3---如何让对话框捕获WM_KEYDOWN消息?
- 孙鑫VC++深入详解:Lesson8 Part3---如何让对话框捕获WM_KEYDOWN消息?
- 如何在对话框程序中让对话框捕获WM_KEYDOWN消息
- 如何在对话框程序中让对话框捕获WM_KEYDOWN消息
- 如何在对话框程序中让对话框捕获WM_KEYDOWN消息
- 【转载】如何在对话框程序中让对话框捕获WM_KEYDOWN消息
- 如何在对话框程序中让对话框捕获WM_KEYDOWN消息
- 如何在对话框程序中让对话框捕获WM_KEYDOWN消息
- 【转】如何在对话框程序中让对话框捕获WM_KEYDOWN消息
- 如何让对话框响应WM_KEYDOWN消息
- 转:孙鑫老师大作 - 在对话框程序中让对话框捕获WM_KEYDOWN消息
- 孙鑫- VC++在对话框程序中让对话框捕获WM_KEYDOWN消息
- 对话框程序中捕获WM_KEYDOWN消息
- 基于对话框程序中让对话框捕获WM_KEYDOWN消息的实现方法
- 让对话框程序捕获WM_KEYDOWN 消息
- 控件截获主对话框WM_KEYDOWN消息后按键所发出的警告音
- VB:如何发送WM_KEYDOWN和WM_KEYUP消息
- VC对话框如何添加WM-ERASEBKGND消息-OnEraseBkgnd函数
- VC对话框如何添加WM_ERASEBKGND消息(OnEraseBkgnd函数)及对话框使用位图背景并透明
- VC对话框如何添加WM_ERASEBKGND消息