热键框——使用说明
热键控件是一个窗口,允许用户输入要用作热键的击键组合。
热键是用户可按以快速执行操作的组合键。例如用户需要定义一个热键,用于激活指定窗口。 热键控件显示用户的选择并确保用户选择有效的组合键。 以下屏幕截图显示了用户按下 Alt 键后热键控件在对话框中的显示方式。
使用热键控件
当用户输入要用作热键的组合键时,键的名称将显示在热键控件中。 组合键可以包含一个修饰键(如CTRL、Alt或SHIFT)和一个随附的键(如字符键、箭头键、功能键等) 。 用户选择组合键后,应用程序将从热键控件检索组合键,并使用它在系统中设置热键。 从热键控件检索的信息包括一个标志,指示修饰键和随附密钥的虚拟密钥代码。 应用程序可以使用热键控件提供的信息来设置全局热键或特定于线程的热键。 全局热键与特定窗口相关联;它允许用户从系统的任何部分激活窗口。 应用程序使用 设置热键 消息设置全局热键。 每当用户按下全局热键时, 设置热键 中指定的窗口都会收到指定 0xF150 值的 系统命令 消息。 此消息会激活接收它的窗口。 在调用 设置热键 的应用程序退出之前,热键将保持有效。 特定于线程的热键会生成 热键消息 消息,该消息将发布到特定线程的开头,以便消息循环的下一次迭代将其删除。 应用程序使用 注册热键 函数设置线程特定的热密钥。热键控制消息
创建热键控件后,应用程序使用三条消息与之交互:热键设置组合、 热键设置按键和 热键获取按键。 应用程序可以发送 热键设置组合 消息,以指定一组被视为无效热键的 CTRL、ALT 和 SHIFT 组合键。 如果应用程序指定了无效的组合键,则它还应指定用户选择无效组合时 要使用的默认修饰符组合。 当用户输入无效组合时,系统会对无效组合和默认组合执行逻辑 OR 操作。 结果被视为有效组合;它转换为字符串并显示在 控件中。 热键设置按键消息允许应用程序为热键控件设置热键组合。 创建热键控件时也会使用此消息。 程序使用 热键获取按键 消息检索用户选择的热键的虚拟密钥代码和修饰符标志。热键控制通知
热键控件不会通过 控件事件 消息发送任何通知代码。 但是,当用户更改 控件 的内容时,它将通过命令事件消息发送 编辑内容更改 通知。默认热键消息处理
本部分介绍与热键控件一起使用的窗口过程处理的窗口消息。中文名字 | 常量数值 | 英文名称 | 释义 |
键入字符 | WM_CHAR | 0x102 | 检索虚拟密钥代码。 |
窗口创建 | WM_CREATE | 1 | 初始化热键控件,清除任何热键规则,并使用系统字体。 |
擦除背景 | WM_ERASEBKGND | 0x14 | 隐藏插入点,调用 处理窗口 函数,然后再次显示插入符号。 |
切换控件 | WM_GETDLGCODE | 0x87 | 返回 DLGC_WANTCHARS 和 DLGC_WANTARROWS 值的组合。 |
中文 | WM_GETFONT | 4 | 检索字体。 |
键盘按下 | WM_KEYDOWN | 0x100 | 如果键为 ENTER、TAB、空格键、DEL、ESC 或 BACKSPACE,则调用 处理窗口 函数。 如果键为 SHIFT、CTRL 或 Alt,它会检查组合是否有效,如果有效,则使用组合设置热键。 所有其他密钥都设置为热键,而无需先检查其有效性。 |
键盘松开 | WM_KEYUP | 0x101 | 检索虚拟密钥代码。 |
失去焦点 | WM_KILLFOCUS | 8 | 销毁插入点。 |
按下左键 | WM_LBUTTONDOWN | 0x201 | 将焦点设置为窗口。 |
首创窗口 | WM_NCCREATE | 0x81 | 设置 WS_EX_CLIENTEDGE 窗口样式。 |
窗口重绘 | WM_PAINT | 15 | 绘制热键控件。 |
获得焦点 | WM_SETFOCUS | 7 | 创建并显示插入点。 |
指定字体 | WM_SETFONT | 0x30 | 设置字体。 |
ALT键字符 | WM_SYSCHAR | 0x107 | 检索虚拟密钥代码。 |
ALT键按下 | WM_SYSKEYDOWN | 0x104 | 如果键为 ENTER、TAB、空格键、DEL、ESC 或 BACKSPACE,则调用 处理窗口 函数。 如果键为 SHIFT、CTRL 或 Alt,它会检查组合是否有效,如果有效,则使用组合设置热键。 所有其他密钥都设置为热键,而无需先检查其有效性。 |
ALT键松开 | WM_SYSKEYUP | 0x105 | 检索虚拟密钥代码。 |
如何检索和设置热键
本主题演示如何检索或设置热键控件的组合键。 热键设置按键消息允许应用程序设置热键控件的热键组合。 应用程序使用 热键获取按键 消息检索用户选择的热键的虚拟密钥代码和修饰符标志。 使用热键框可以显示用户按下的组合键,使用 热键获取按键 消息从热键控件中检索组合键, 然后使用 设置热键 消息设置全局热键。
程序段 按钮1_点击 整数 键值=发送消息(热键框1, 热键获取按键, 0, 0) 发送消息(窗体, 设置热键, 键值, 0) 结束
热键框——发送消息:
中文名字 | 常量数值 | 英文名称 | 释义 |
热键设置按键 | 0x401 | HKM_SETHOTKEY | 设置热键控件的热键组合。③参数:键码/修饰符(各1字节);④数据:0 |
热键获取按键 | 0x402 | HKM_GETHOTKEY | 获取热键控件的键码和修饰符标志。③参数:0;④数据:0;返回值1SHIFT,2CTRL,4ALT,8扩展 |
热键设置组合 | 0x403 | HKM_SETRULES | 定义热键控件的无效组合和默认修饰符组合。③参数:标志,1无,2SHIFT,4CTRL,8ALT,16S+C,32S+A,64C+A,128SCA;④数据:组合1SHIFT,2CTRL,4ALT,8扩展; |