以下功能创建热键控件,使用HKM_SETRULES和HKM_SETHOTKEY消息进行初始化,并返回控件的句柄。此热键控件不允许用户选择作为单个未修改密钥的热键,也不允许用户仅选择SHIFT和密钥。(这些规则有效地防止用户在输入文本时选择可能意外输入的热键。)
// InitializeHotkey - 创建热键控件并设置规则
//及其默认设置。
//返回热键控件的句柄。
// hwndDlg - 父窗口的句柄(对话框)
//
//全局变量
// g_hinst - 应用程序实例的句柄
extern HINSTANCE g_hinst;
HWND WINAPI InitializeHotkey(HWND hwndDlg)
{
//确保加载公共控制DLL。
InitCommonControls();
hwndHot = CreateWindowEx(
0, //没有扩展样式
HOTKEY_CLASS, // 班级名称
"", //无标题(标题)
WS_CHILD | WS_VISIBLE, //风格
10, 10, //位置
200, 20, // size
hwndDlg, //父窗口
NULL, //使用类菜单
g_hinst, //实例
NULL //没有WM_CREATE参数
);
SetFocus(hwndHot);
//设置无效键组合的规则。如果用户
//不提供修饰符键,使用ALT作为修饰符。
//如果用户提供SHIFT作为修饰符键,请使用
// SHIFT + ALT代替。
SendMessage函数(hwndHot,HKM_SETRULES。
(WPARAM) HKCOMB_NONE | HKCOMB_S, //无效组合键
MAKELPARAM(HOTKEYF_ALT, 0)); //将ALT添加到无效条目
//将CTRL + ALT + A设置为此窗口的默认热键。
// 0x41是'A'的虚拟键代码。
SendMessage函数(hwndHot,HKM_SETHOTKEY。
MAKEWORD(0x41, HOTKEYF_CONTROL | HOTKEYF_ALT), 0);
return hwndHot;
}