App Inventor 2 中文社区让每一个创意,成为真实的 App!

搜索

扫码访问移动社区 移动社区

关注我,精彩不错过! 公众号

扫码安装最新版AI伴侣 获取 App

Aia Store — App上架指南 .aia 源码一站式解决方案 发布日志 — AI2连接测试 — ai2Starter模拟器

AppInventor2离线版 — 中文教育版 — 接入DeepSeek VIP会员 享专有教程,免费赠送基础版*技术支持服务! AI2入门必读 — 中文文档 — AI2拓展 — IoT专题

查看: 16897|回复: 0
打印 上一主题 下一主题

MFC OnKeyDown没反应,不响应键盘操作

AppInventor2 SVIP会员

AppInventor2 SVIP会员

  • TA的每日心情
    开心
    2024-03-14 20:36
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    70

    主题

    117

    帖子

    1467

    积分

    注册会员

    Rank: 1

    积分
    1467
    跳转到指定楼层
    楼主
    发表于 2015-02-20 15:50:19 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    本帖最后由 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





    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2026 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2026-10-02 17:11 , Processed in 0.017579 second(s), 30 queries .