C++/MFC-Hot Key

Hot Key控件通常用来捕获热键,例如快捷键设置


一、函数

1.1CHotKeyCtrl控件

void SetHotKey( WORD wVirtualKeyCode, WORD wModifiers );

1.2获取热键数据

DWORD GetHotKey( ) const;
void GetHotKey( WORD &wVirtualKeyCode, WORD &wModifiers ) const;

1.3注册系统热键

RegisterHotKey
The RegisterHotKey function defines a system-wide hot key.
BOOL RegisterHotKey(
  HWND hWnd,        // window to receive hot-key notification
  int id,           // identifier of hot key
  UINT fsModifiers, // key-modifier flags,键值修改标志
  UINT vk            // virtual-key code
);

1.4响应热键事件

GetParent
WM_HOTKEY

二、使用方法

2.1获取并注册键值

//获取热键值
CHotKeyCtrl* p = (CHotKeyCtrl*)GetDlgItem(IDC_HOTKEY1);
WORD vkey, fsmoderfiers;
p->GetHotKey(vkey, fsmoderfiers);
//注册热键    句柄,ID(int),模式,键值
RegisterHotKey(m_hWnd, 111, fsmoderfiers, vkey);//成功,返回1,失败,返回0

ps:建议使用CTRL+来注册热键。

2.2注册热键功能

在hotkey所在的Dialog类中:

即类视图,相应的Dialog类选中,右键->属性->消息->WM_HOTKEY-><ADD>OnHotKey

void CSliderCtlDlg::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	static bool flag=true;
	switch (nHotKeyId)//nHotKeyId即为RegisterHotKey中注册的ID号,唯一
	{
	case 111://相应热键的功能
		ShowWindow(flag);//例如:显示当前窗口
		flag = !flag;
		break;
	default:
		break;
	}
	CDialogEx::OnHotKey(nHotKeyId, nKey1, nKey2);
}

2.3取消注册

UnregisterHotKey(GetSafeHwnd(),111);

这个函数一般放在窗口关闭的时候,即WM_DESTORY消息中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值