跳转至

热键控件 (SHotKeyCtrl)

热键控件是一个用于捕获和显示键盘快捷键组合的专用控件。它允许用户通过按键来设置快捷键,并提供了相应的显示和处理功能。

基本信息

  • 类名SHotKeyCtrl
  • 控件标签hotkey
  • 基类SWindow
  • 功能:捕获和显示键盘快捷键组合

属性说明

基本属性

属性名 类型 默认值 说明
invalidComb string - 无效热键组合
invalidModifier string - 无效组合键,如shift
hotKey string - 快捷键

使用示例

基本热键控件

<hotkey name="hkBasic" 
        pos="10,10,200,35" 
        invalidComb="Ctrl+Alt+Del"/>

带默认值的热键控件

<hotkey name="hkDefault" 
        pos="10,45,200,70" 
        hotKey="CTRL+ALT+A"
        colorText="#333333"/>

自定义无效组合的热键控件

<hotkey name="hkCustom" 
        pos="10,80,200,105" 
        invalidComb="Ctrl+Alt+Del,Ctrl+Esc"
        invalidModifier="Shift"
        font="bold:1,size:14"
        align="center"/>

事件处理

热键控件支持以下事件:

事件名 EventID 说明
EVT_HOTKEY_CHANGED EventHotKeyChanged::EventID 热键改变事件
// 事件处理示例
EVENT_MAP_BEGIN()
    EVENT_NAME_HANDLER(L"hkBasic", EventHotKeyChanged::EventID, OnHotKeyChanged)
EVENT_MAP_END()

void OnHotKeyChanged(IEvtArgs *pEvt)
{
    EventHotKeyChanged *pRealEvt = sobj_cast<EventHotKeyChanged>(pEvt);
    WORD wVK = pRealEvt->wVK;
    WORD wMod = pRealEvt->wMod;
    // 处理热键改变事件
}

代码操作

// 查找热键控件
SHotKeyCtrl *pHotKey = FindChildByName2<SHotKeyCtrl>(L"hkBasic");

// 设置热键
pHotKey->SetHotKey(VK_F1, HOTKEYF_CONTROL);

// 获取热键
WORD wVK, wMod;
pHotKey->GetHotKey(wVK, wMod);

// 设置无效组合
pHotKey->SetAttribute(L"invalidComb", L"Ctrl+Alt+Del");

// 设置默认热键
pHotKey->SetAttribute(L"hotKey", L"CTRL+SHIFT+T");

最佳实践

  1. 有效性检查:通过 invalidCombinvalidModifier 属性限制无效的热键组合
  2. 默认值设置:使用 hotKey 属性设置合理的默认热键
  3. 用户提示:提供清晰的说明帮助用户理解如何设置热键

常见问题

Q: 热键不生效怎么办?

A: 检查是否设置了有效的热键组合,并正确处理 EVT_HOTKEY_CHANGED 事件。

Q: 如何限制特定的无效组合?

A: 使用 invalidComb 属性设置不允许的热键组合。

Q: 如何设置默认热键?

A: 通过 hotKey 属性或 SetHotKey 方法设置默认值。

相关控件