QTwin热键接收消息

QTwin热键接收消息

1.注册热键

 

BOOL   RegisterHotKey( 
HWND   hWnd,         //响应该热键的窗口句柄 
Int   id,                       //该热键的唯一标识 
UINT   fsModifiers,   //该热键的辅助按键 
UINT   vk                 //该热键的键值 
);

 

为了得到唯一标识,我们还将用到另一个API函数   
ATOM   GlobalAddAtom( 
LPCTSTR   lpString   //自己设定的一个字符串 
); 

 

注:   HotKeyId的合法取之范围是0x0000到0xBFFF之间,   GlobalAddAtom函数得到的值 
0xC000到0xFFFF之间,所以减掉0xC000来满足调用要求。

 

热键的辅助按键包括Mod_Ctrl   、Mod_Alt、Mod_Shift,对于Windows兼容键盘还支持Windows 
键,即其键面上有Windows标志的那个键,其值为Mod_win。

 

示例:注册ALT+F8热键

iHotKeyId = GlobalAddAtom(L"RegHookHotKey") - 0xc000;

RegisterHotKey((HWND)this->winId(), iHotKeyId, MOD_ALT, VK_F8);

只注册F8热键

RegisterHotKey(Handle,   hotkeyid,   0,   VK_F8);

 

2.销毁热键函数

UnRegisterHotKey(handle,   HotKeyId);   //注销HotKey,   释放资源

 

3.QT接收热键消息

一旦热键设置成功,在程序应用过程中如果有相应的键被按下,Windows系统都会给你的应 
用程序发送一个消息WM_HOTKEY,不管你的应用程序是否为当前活动的。其中WM_HOTKEY消 
息的格式为:     

idHotKey   =   (int)   wParam;   //   该参数在设置系统级的热键有用,一般不予使用 
fuModifiers   =   (UINT)   LOWORD(lParam);     //热键的辅助按键 
uVirtKey   =   (UINT)   HIWORD(lParam);   //热键的键值   

 

QT窗体实现函数:nativeEvent

在函数中接收消息

bool Dialog::nativeEvent(const QByteArray &eventType, void *message, long *result)

{

    MSG* msg = (MSG*)(message);

 

    if(msg->message == WM_HOTKEY)

    {

 

        qDebug("%x, %x", HIWORD(msg->lParam), LOWORD(msg->lParam));

        close();

    }

 

    return false;

}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值