我创建了一个MFC的对话框,现在我想加入一个键盘事件,请问应该在哪个位置写什么代码

 我来答
百度网友7d16e87
2015-11-30 · TA获得超过281个赞
知道小有建树答主
回答量:383
采纳率:100%
帮助的人:257万
展开全部
//.h文件中添加
virtual BOOL PreTranslateMessage(MSG* pMsg);
//.cpp文件中添加,根据以下代码自己调整
BEGIN_MESSAGE_MAP(CDlgXXX, CDialog)
 ON_WM_KEYDOWN()
 ON_WM_KEYUP()
END_MESSAGE_MAP()
BOOL CDlgXXX::PreTranslateMessage(MSG* pMsg)
{
  switch(pMsg->message)
  {
     case WM_KEYDOWN:
     {
         if((pMsg->wParam == VK_RETURN) || (pMsg->wParam == VK_ESCAPE))
            return TRUE;
         switch(pMsg->wParam)
         {
           case VK_UP:    
            break;
           case VK_DOWN:    
            break;
           case VK_LEFT:    
            break;
           case VK_RIGHT:    
            break;
           case 'Q':
            break;
           case 'S':   
            break;
           case 'X':   
            break;   
          }
          break;
     }
     return CDialog::PreTranslateMessage(pMsg);
}
更多追问追答
追问
请问分别放在.h和.cpp的哪里
追答

.h:放在类声明里面啊,这就是简单的函数声明啊,只不过这个是虚函数,从基类继承过来的。

.cpp:生成的cpp文件肯定有这一句

BEGIN_MESSAGE_MAP(CDlgXXX, CDialog)
END_MESSAGE_MAP()

在里面添加

 ON_WM_KEYDOWN()
 ON_WM_KEYUP()

然后剩下的那个就是函数的实现啊

隔壁的_老王abc
2015-11-30 · TA获得超过134个赞
知道答主
回答量:69
采纳率:28%
帮助的人:20.8万
展开全部
添加过滤消息PreTranslateMessage
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式