2012-03-29 49 views

回答

2

编辑控件应该有ES_WANTRETURN style改变自己的行为,以期望:

指定当用户按下 ENTER键,而在 对话框中输入文本多行编辑控件回车插入。如果您不指定此样式,按ENTER键 与按下对话框的默认按钮具有相同的效果。 此样式对单行编辑控件没有影响。

要在创建控件后更改此样式,请使用 SetWindowLong。

+0

我应该更清楚。我确实希望输入键可以触发默认按钮,但我希​​望将焦点留在编辑控件中(并且不要插入换行符)。 – user1299863 2012-03-29 18:01:34

+0

然后,你不需要'ES_WANTRETURN'风格,否则它会被控制权吃掉,对吗?你传递它,让默认值转移焦点并触发按钮。现在你已经调用了'BN_CLICKED'通知并且处理它。这是您处理通知的工作机会,然后通过使用'SetFocus'将焦点转移到您的编辑控件来完成它。 – 2012-03-29 19:03:43

+0

如果您有几个编辑控件,并且您想要将焦点返回到按钮之前的焦点,那么情况会变得更加复杂。然后,您可能想要听取'EN_KILLFOCUS'通知并记住按钮单击之前的最后一个通知。或者,您可以对按钮控件进行子类化并处理其“WM_SETFOCUS”,以查看从按钮到哪个控件焦点。或者,可能会有其他对话框消息对您可以使用Spy ++工具看到的目的有用并利用。 – 2012-03-29 19:06:14

相关问题