清泛IT社区
标题:
MFC OnKeyDown没反应,不响应键盘操作
[打印本页]
作者:
zqp2013
时间:
2015-02-20 15:50
标题:
MFC OnKeyDown没反应,不响应键盘操作
本帖最后由 zqp2013 于 2015-2-20 15:55 编辑
在MFC中添加键盘的消息响应,通常是通过
OnKeyDown
函数来完成消息的捕捉和响应。
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
BEGIN_MESSAGE_MAP(CxxxDlg, CDialog)
......
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
添加了消息映射后, 发现无论按下键盘的哪个键OnKeyDown函数体都没有被执行。
基于对话框的程序是无法直接响应键盘消息的,需要重载虚函数PreTranslateMessage()。
解决方案(重载
PreTranslateMessage函数)
:
virtual BOOL PreTranslateMessage(MSG* pMsg);
BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message == WM_KEYDOWN)
{
if (pMsg->wParam == VK_CONTROL)
{
AfxMessageBox(_T("Ctrl pressed!"));
}
}
return __super::PreTranslateMessage(pMsg);
}
深入探索该问题请移步:
http://wenku.baidu.com/link?url=2eG1TLx_ARJHKO6LFtZU_u6AOv6Pw8RyemsJEXvaKYwvQRHAh43D-TnvQZvt3-U5JMZjRqE835qeArbKKscaO-YAxfwBkepkYbdbzc2iEZK
欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/)
Powered by Discuz! X3.3