码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-02-12 18:38:11      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:对话框   mfc   组合键   

在上一篇文章的基础上,这里描述如何捕获组合键,这里以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)

标签:对话框   mfc   组合键   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!