键盘消息,有高手能解决吗?

expprg 2004-07-11 12:11:09
各位大侠,我在ApplicationEventsMessage中处理WM_KEYDOWN时发现WM_KEYDOWN不会区分大小写字母,而WM_CHAR是区分的。比如'A'和'a'的WM_KEYDOWN消息的wParam和lParam都相同,都是65和1966081;而WM_CHAR消息'A'为65和1966081,'a'为97和1966081。
查看帮助说WM_CHAR是由TranslateMessage函数产生的。那么我急需知道TranslateMessage是如何产生WM_CHAR的?是由WM_KEYDOWN消息转换来的吗?
因为我在处理WM_KEYDOWN消息时,无法区别大小写,只有再处理WM_CHAR消息,然而这样的话程序的问题是:同样的功能会执行两次,很是头痛!
恳请各位帮忙!十分感谢!
...全文
169 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
expprg 2004-07-12
  • 打赏
  • 举报
回复
如果只处理WM_CHAR消息,那么非字符按键(比如F1-F12,光标等)就不能被处理。
还是飞龙的方法可行。
谢谢各位!
aiirii 2004-07-11
  • 打赏
  • 举报
回复
>>因为我在处理WM_KEYDOWN消息时,无法区别大小写,只有再处理WM_CHAR消息,然而这样的
>>话程序的问题是:同样的功能会执行两次,很是头痛!
那为何不在 WM_CHAR 中处理??
中国 2004-07-11
  • 打赏
  • 举报
回复
在WM_KEYDOWN中处理可以,使用:
GetKeyboardState
ToAscii
飞天揽月 2004-07-11
  • 打赏
  • 举报
回复
TranslateMessage是系统的函数,底层的截获键盘的操作。你可以直接对其操作,但的对敌曾特别熟悉,编输入法的都得处理这些函数。
linzhengqun 2004-07-11
  • 打赏
  • 举报
回复
你只处理WM_CHAR消息不就行了吗,

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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