当有人点击“Enter”时,我创建了一个能够接受数据的编辑控件。我使用子类来做到这一点。它几乎完美地工作。但是,单击“Enter”后,系统每次都会播放“Error”声音。我尝试使用ES_MULTILINE和ES_AUTOVSCROLL绕过它,但它有所帮助。现在点击“Enter”后没有声音,但在文本框中出现无用的“Enter”字符,这是不可能删除的。 如何绕过系统声音?或者从该文本框中删除“Enter”字符(SetWindowText(句柄,“”)没有帮助。)
答案 0 :(得分:3)
您不需要ES_MULTILINE
,ES_AUTOVSCROLL
或ES_WANTRETURN
样式标记。
要阻止单行编辑控件在VK_RETURN
上发出蜂鸣声,您需要处理该控件的WM_CHAR
消息,并为VK_RETURN
返回0而不调用默认窗口过程,必须为所有其他键调用。
答案 1 :(得分:1)
我从WinAPI参考资料中了解到,编辑调用WM_CHAR
的{{1}}默认处理非法字符的函数MessageBeep
,例如enter和tab。我通过拦截WM_KEYDOWN
(如Petzold为滚动条所示)将编辑控件子类化为控件之间的选项卡,但是当我按Tab键时它发出哔哔声。因此,当我按Tab键时,我会拦截WM_CHAR
以避免默认处理,因此请停止发出哔哔声。