c++ winapi - 子类化编辑控件 - 单击“Enter”时出现烦人的声音

use*_*592 4 c++ winapi subclassing

我制作了一个编辑控件,当有人单击“Enter”时能够接受数据。我使用子类化来做到这一点。它几乎完美地工作了。但点击“Enter”后,系统每次都会发出“Error”声音。我尝试使用 ES_MULTILINE 和 ES_AUTOVSCROLL 来绕过它,但它有部分帮助。现在点击“Enter”后没有声音,但文本框中出现无用的“Enter”字符,无法删除。如何绕过系统声音?或者从该文本框中删除“Enter”字符(SetWindowText(handle, "") 没有帮助)。

mgh*_*hie 5

您不需要ES_MULTILINE,ES_AUTOVSCROLLES_WANTRETURN样式标志。

要阻止单行编辑控件发出蜂鸣声,VK_RETURN您需要处理WM_CHAR该控件的消息并返回 0 VK_RETURN,而不调用默认窗口过程,而所有其他键都必须调用默认窗口过程。

  • 您不需要处理“WM_KEYDOWN”消息。如果您不处理“WM_KEYDOWN”,默认处理(通过调用“TranslateMessage”)将产生一条或多条“WM_CHAR”消息。处理“WM_CHAR”足以防止发出蜂鸣声。 (2认同)