求助,关于THotKey不能区分Num、Left/Right的问题(已经参考季老大的贴)

从天而降的扣篮 2007-11-15 11:16:40
参考贴子:
http://topic.csdn.net/t/20051205/12/4438415.html
http://topic.csdn.net/t/20051206/09/4440364.html

BCB:
我已经看过了05年12月季老大的贴子,不过,季老大的办法可以区别“Left与Num 4”,但不是区分“Num 4与4”。
不知道还有没有更完美一些的办法?

我自己试过保存到INI中时,如果不使用ShortCutToText,而是直接保存Integer值,读取出来倒可以区分出“Num 4与4”,但是就分不出“Left与Num 4”。
好像是ShortCutToText有BUG。苦啊。

哪怕是重新写一个方法或者单元文件也在所不惜!!!


//代码就我就拿原来的吧,也方便大家一起讨论
//读取
AnsiString str = ReadString("Hotkey", "htkPan", NULL, "Hotkey.ini");
if (str.SubString(1,6)=="hkExt ") {
HotKey1->HotKey = StrToInt(str.Delete(1,6));
HotKey1->Modifiers = THKModifiers(HotKey1->Modifiers) << hkExt;
}
else
HotKey1->HotKey = StrToInt(str);

//保存:
AnsiString str = HotKey1->Modifiers.Contains(hkExt) ? "hkExt " : "";
str += IntToStr(HotKey1->HotKey);
WriteString("Hotkey", "htkPan", str, "Hotkey.ini");
...全文
81 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
原来是硬键值呀,难怪动不了他呢。
alloutoflove 2007-11-21
  • 打赏
  • 举报
回复
额...Num 4是个硬键值, 和NumLock无关...
i_love_pc 2007-11-15
  • 打赏
  • 举报
回复
看看是否跟小键盘锁有关系!!
Waiting4you 2007-11-15
  • 打赏
  • 举报
回复
你是说区分NumLock锁开和NumLock锁关的状态? 就Hotkey这个控件来说是没戏了,它封装的是windows自带的HOTKEY,它先天对这个不区分。

要不你在它OnChange里自己加判断NumLock状态的 GetKeyboardState

  • 打赏
  • 举报
回复
哈哈,真办法。
不过还是不区分开NumLock的状态:不管是什么时候,他的值不一样,但显示的都是Num 4。
帮人帮到底,有什么办法可以最终一起解决的吗?
Waiting4you 2007-11-15
  • 打赏
  • 举报
回复
试试这样:(这里的hk1是THotKey)

取HotKey数据:
DWORD dwHK1 = SendMessage(hk1->Handle, HKM_GETHOTKEY,0,0);

把dwHK1还原到THotKey里:
SendMessage(hk2->Handle, HKM_SETHOTKEY,dwHK1,0);

这个dwHK1里的数据包含了HotKey和Modifiers,保存时只要保存这个数字就可以了,比较方便。我在我的机器上试是可以的。

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧