+ -
当前位置:首页 → 问答吧 → vc,在软件中如何设置自己的快捷键?

vc,在软件中如何设置自己的快捷键?

时间:2011-11-28

来源:互联网

我想在软件运行过程中,通过随时按下键盘上的快捷键(比如ctrl+R)来实现弹出对话框的功能。能不能通过捕获键盘按下消息来实现呢?那么注册热键该如何来做呢?

作者: hao876474206   发布时间: 2011-11-28

自己先顶一个,打下帮忙啊..

作者: hao876474206   发布时间: 2011-11-28

以单文档程序为例,可重写CXXXAPP类虚函数PreTranslateMessage。示例代码如下:
C/C++ code
[size=16px]BOOL CXXXApp::PreTranslateMessage(MSG* pMsg)
{
    // TODO: Add your specialized code here and/or call the base class
    if (pMsg->message == WM_KEYDOWN)
    {
        switch (pMsg->wParam)
        {
            
            //屏蔽Esc消息
        case VK_ESCAPE:
            return true;
            break;
            
            //屏蔽回车键消息
        case VK_RETURN:
            return true;
            break;
            
            //组合键Ctrl+C
        case 'C':
            if(::GetKeyState(VK_CONTROL) < 0)
            {
            }
            break;
            
            //组合键Ctrl+Shift+S
        case 'S':
            if((::GetKeyState(VK_CONTROL) < 0) && (::GetKeyState(VK_SHIFT) < 0))
            {
            }
            return CWinApp::PreTranslateMessage(pMsg);
        }
    }
}[color=#FF0000][/color][/size]

作者: fight_in_dl   发布时间: 2011-11-28

BOOL CXXXApp::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message == WM_KEYDOWN)
{
switch (pMsg->wParam)
{

//屏蔽Esc消息
case VK_ESCAPE:
return true;
break;

//屏蔽回车键消息
case VK_RETURN:
return true;
break;

//组合键Ctrl+C
case 'C':
if(::GetKeyState(VK_CONTROL) < 0)
{
}
break;

//组合键Ctrl+Shift+S
case 'S':
if((::GetKeyState(VK_CONTROL) < 0) && (::GetKeyState(VK_SHIFT) < 0))
{
}
return CWinApp::PreTranslateMessage(pMsg);
}
}
}

作者: fight_in_dl   发布时间: 2011-11-28