VC 系统热键

软件环境:Visual Studio 2008 SP1
本次目的:实现全局热键的效果

      我们知道,通常在聊QQ的时候有新信息到来的时候,同时按下Ctrl+Alt+Z就能弹出新消息的聊天窗口。现在让我们来实现系统热键。
步骤一:建立一个基于对话框的工程,名称任意;
步骤二:在对话框头文件的消息映射函数 里面添加以下函数:

afx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam); 
afx_msg LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);

步骤三:在对话框实现文件CPP里面在BEGIN_MESSAGE_MAP 和END_MESSAGE_MAP 之间加入

ON_MESSAGE(WM_HOTKEY,OnHotKey) 
ON_MESSAGE(WM_HOTKEY,OnHotKey)

步骤四:在对话框初始化函数OnInitDialog() 里面注册热键

RegisterHotKey(m_hWnd,1001,MOD_CONTROL|MOD_SHIFT|MOD_ALT,VK_F10); 
RegisterHotKey(m_hWnd,1001,MOD_CONTROL|MOD_SHIFT|MOD_ALT,VK_F10);

步骤五:对函数OnHotKey() 函数的实现

LRESULT CTestDlg::OnHotKey(WPARAM wParam,LPARAM lParam)   
{  
    if(wParam == 1001)  
    {  
        AfxMessageBox(_T("Ctrl+Shift+Alt+F10 Pressed!"));     
    }  
    return true;  

LRESULT CTestDlg::OnHotKey(WPARAM wParam,LPARAM lParam)
{
 if(wParam == 1001)
 {
  AfxMessageBox(_T("Ctrl+Shift+Alt+F10 Pressed!")); 
 }
 return true;
}

步骤六:销毁。重载OnDestroy ()函数

void CTestDlg::OnDestroy()  
{  
    CDialog::OnDestroy();  
        UnregisterHotKey( m_hWnd, 1001);  

void CTestDlg::OnDestroy()
{
 CDialog::OnDestroy();
        UnregisterHotKey( m_hWnd, 1001);
}

好了,完成。下面看下用到的两个重要函数:

BOOL RegisterHotKey(  
    HWND hWnd,     //窗口句柄  
    int id,        //热键标识符  
    UINT fsModifiers,    //按键参数  
    UINT vk        //热键的虚拟键码  
); 
BOOL RegisterHotKey(
    HWND hWnd,     //窗口句柄
    int id,        //热键标识符
    UINT fsModifiers,    //按键参数
    UINT vk        //热键的虚拟键码
);

对于fsModifiers 参数有以下的选项:

MOD_ALT        Either ALT key must be held down.
MOD_CONTROL      Either CTRL key must be held down.
MOD_SHIFT         Either SHIFT key must be held down.
MOD_WIN         Either WINDOWS key was held down. These keys are labeled with the Microsoft Windows logo.Keyboard shortcuts that involve the WINDOWS key are reserved for use by the operating system.
BOOL UnregisterHotKey(  
    HWND hWnd,   //句柄  
    int id       //热键标识符  
); 
BOOL UnregisterHotKey(
    HWND hWnd,   //句柄
    int id       //热键标识符
);

关于RegisterHotKey的百科解释http://baike.baidu.com/view/1080084.htm
关于UnregisterHotKey的百科解释http://baike.baidu.com/view/1080097.htm

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/akof1314/archive/2010/01/03/5122975.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值