首页 > 编程语言 > 详细

MFC 对话框Dialog响应键盘事件(组合键Ctrl+A)

时间:2015-02-12 18:35:52      阅读:412      评论:0      收藏:0      [点我收藏+]

在上一篇文章的基础上,这里描述如何捕获组合键,这里以Ctrl+A为例
做法就是按下Ctrl的时候用一个静态成员变量保存Ctrl是否被按下,当Ctrl按下的时候设置为true;当Ctrl键抬起的时候设置为false

其他组合键的开发用此例举一反三即可。

头文件声明

    BOOL PreTranslateMessage(MSG* pMsg);

源文件定义

BOOL CmfcDlg::PreTranslateMessage(MSG* pMsg)
{
    static bool m_ctrl_down = false;//此函数第一次调用的时候初始化

    if (pMsg->message == WM_KEYDOWN)
    {

        switch (pMsg->wParam)
        {
        //VK_A - VK_Z are the same as ASCII ‘A‘ - ‘Z‘ (0x41 - 0x5A) 不区分大小写

        case ‘A‘://Ctrl + A
            if (m_ctrl_down)
            {
                AfxMessageBox(_T("Ctrl + A key down"));return TRUE;
            }
            break;
        case VK_CONTROL:
            m_ctrl_down = true;return TRUE;
        default:
            return TRUE;
        }
    }
    if (pMsg->message == WM_KEYUP)
    {
        switch (pMsg->wParam)
        {
        case VK_CONTROL:
            m_ctrl_down = false; return TRUE;
        }
    }
    return CDialogEx::PreTranslateMessage(pMsg);
}

MFC 对话框Dialog响应键盘事件(组合键Ctrl+A)

原文:http://blog.csdn.net/calmreason/article/details/43763989

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!