如何动态添加删除热键(hotkey)
最新我需要做一个热键模组,希望能够动态的增加删除热键。
1.我需要提供一个AddHotKey函数,该函数有3个参数(1.需要添加的hotkey list; 2.需要添加热键的窗口handle; 3.热键发生时具体触发的动作,即一个函数指针)
2.一个RemoveHotKey函数该函数有3个参数(1.需要删除的hotkey list; 2.需要删除热键的窗口handle; 3.热键发生时具体触发的动作,即一个函数指针)

如上图,我的tab control有3个分页,然后每个分页用AddHotKey注册不同的热键,每个分页也可以用RemoveHotKey删除不同的热键
我的问题是:
我在每个分页的OnInitDialog函数里用RegisterHotKey注册热键。这样导致
1.RegisterHotKey注册的是系统热键(全局热键),我切换到分页2后,分页2页可以相应分页1添加的热键,我不希望这样。我要切换到每个分页后,每个分页仅仅只响应本分页注册的热键
2.希望我注册的这个热键不要对其他有程序有影响,比如我注册CTRL+S,office word也有这个热键,这样如果我的程序开office word的CTRL+S就会失去作用
请问怎么解决?难道需要我监测3个分页分别是否有焦点,然后一有焦点就RegisterHotKey,一失去焦点就UnRegisterHotKey?
1.我需要提供一个AddHotKey函数,该函数有3个参数(1.需要添加的hotkey list; 2.需要添加热键的窗口handle; 3.热键发生时具体触发的动作,即一个函数指针)
2.一个RemoveHotKey函数该函数有3个参数(1.需要删除的hotkey list; 2.需要删除热键的窗口handle; 3.热键发生时具体触发的动作,即一个函数指针)

如上图,我的tab control有3个分页,然后每个分页用AddHotKey注册不同的热键,每个分页也可以用RemoveHotKey删除不同的热键
我的问题是:
我在每个分页的OnInitDialog函数里用RegisterHotKey注册热键。这样导致
1.RegisterHotKey注册的是系统热键(全局热键),我切换到分页2后,分页2页可以相应分页1添加的热键,我不希望这样。我要切换到每个分页后,每个分页仅仅只响应本分页注册的热键
2.希望我注册的这个热键不要对其他有程序有影响,比如我注册CTRL+S,office word也有这个热键,这样如果我的程序开office word的CTRL+S就会失去作用
请问怎么解决?难道需要我监测3个分页分别是否有焦点,然后一有焦点就RegisterHotKey,一失去焦点就UnRegisterHotKey?
...全文


界面
