zoukankan      html  css  js  c++  java
  • 上下左右键

    将近一年的时间没有在博客上写过东西了,现在重新开始知识积累,将工作、学习中遇到的问题或解决方法记录下来。

       在MFC对话框程序中响应键盘上、下、左、右键。

      自己先后尝试了窗体的各种消息后失败,在网上搜到这个解决方案:

       重写PreTranslateMessage 函数,无论在窗体上按什么键 pMsg->message==WM_KEYDOWN 为真。

      而要监视上、下、左、右键,则应该这样

    //重写窗体类的PreTranslateMessage函数
    BOOL CDemoDlg::PreTranslateMessage(MSG* pMsg)
    {
    if(pMsg->message==WM_KEYDOWN)
    {
    if(pMsg->wParam==VK_LEFT)
    {}
    else if(pMsg->wParam==VK_RIGHT)
    {}
    else if(pMsg->wParam==VK_UP)
    {}
    else if(pMsg->wParam==VK_DOWN)
    {}
    }
    return CDialog::PreTranslateMessage(pMsg);
    }

      测试发现,这种方法很强大——就算窗体上存在其他可以接受焦点的控件,也可以在窗体上响应键盘消息。对比,当窗体上一个TEXT控件正在接收键盘输入,窗体仍然可以得到消息上下左右消息。

    总结:PreTranslateMessage函数打开了在MFC中处理消息的大门,根据函数名就可知道这个函数在TranslateMessage函数之前执行,查看MSDN后发现的确也是这样。如果想自己控制消息都可在这里实现,有待今后在这个函数里实现更有用的功能。

  • 相关阅读:
    课堂作业04 2017.10.27
    课程作业 03 动手动脑 2017.10.20
    课程作业 03 2017.10.20
    HDU 3974 Assign the task
    POJ 2155 Matrix
    POJ 2481 Cows
    HDU 3038 How Many Answers Are Wrong
    CS Academy Array Removal
    POJ_1330 Nearest Common Ancestors LCA
    CF Round 427 D. Palindromic characteristics
  • 原文地址:https://www.cnblogs.com/xiangism/p/2107663.html
Copyright © 2011-2022 走看看