Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows WM_SYSCHAR的用途是什么?_Windows_Winapi - Fatal编程技术网

Windows WM_SYSCHAR的用途是什么?

Windows WM_SYSCHAR的用途是什么?,windows,winapi,Windows,Winapi,,响应WM\u SYSKEYDOWN消息,以与处理WM\u KEYDOWN/WM\u CHAR并行的方式生成消息。但是这些信息有什么用呢?它们不能被解释为用户键入文本,也不能被解释为热键(因为这就是WM_SYSKEYDOWN的用途)。那么,它们有什么用呢?(总是神秘的)DefWindowProc对这些消息有什么作用吗?我可以/应该在我的应用程序中使用它们做什么(或者应该忽略它们) MSDN的页面标题“字符消息”下有以下内容: WM_SYSCHAR消息表示系统字符。与WM_SYSKEYDOWN一样

,响应
WM\u SYSKEYDOWN
消息,以与处理
WM\u KEYDOWN
/
WM\u CHAR
并行的方式生成消息。但是这些信息有什么用呢?它们不能被解释为用户键入文本,也不能被解释为热键(因为这就是
WM_SYSKEYDOWN
的用途)。那么,它们有什么用呢?(总是神秘的)
DefWindowProc
对这些消息有什么作用吗?我可以/应该在我的应用程序中使用它们做什么(或者应该忽略它们)

MSDN的页面标题“字符消息”下有以下内容:

WM_SYSCHAR消息表示系统字符。与WM_SYSKEYDOWN一样,您通常应该直接将此消息传递给DefWindowProc。否则,可能会干扰标准系统命令。特别是,不要将WM_SYSCHAR视为用户键入的文本


这说明它不是,但无法指定如果
DefWindowProc
无法看到这些消息,会导致什么中断?更不用说,
TranslateMessage
不是一个正常运行的消息循环的要求,因此我认为,
DefWindowProc
可能不会指望生成这些消息。

您忽略了本地化,即需要匹配菜单项文本的加速器。例如,Alt+D在俄罗斯人的机器上是无用的,他们的字母表上没有D。您确实希望在加速器表中指定Alt+П。一个完全不同的键。@HansPassant:这是一个很好的观点,但是
TranslateAccelerator
的文档说明它使用
WM\u KEYDOWN
消息,而不是
WM\u CHAR
消息。此外,我只能假设Alt+П仍然会产生一个
WM_SYSKEYDOWN
消息,其中包含一些虚拟键码,这些虚拟键码在美国键盘上的位置与俄罗斯键盘上的原始键大致相同。也许我遗漏了什么,或者MSDN文档可能太草率了。