[英]win32 c++ detecting 'enter' in a edit control withot subclassing?
基本上我想要一个Enter来触发一个消息,当编辑控件聚焦并且用户按下回车时我可以捕获该消息。 所有在线解决方案似乎都是关于子类化的,但我想知道是否还有另一种方法呢?
例如,我的按钮具有标识符ID_BUTTON_SEND。 这是我的想象;
case WM_COMMAND:
switch (LOWORD(wParam))
case ID_BUTTON_SEND
if ('enter was pressed')
do this
else
default
...你明白了:)我已经阅读了http://support.microsoft.com/kb/102589,但坦率地说,选项1对我来说没有多大意义。
干杯
捕获这个的最好方法是在调用TranslateMessage之前。 因此,如果使用MFC,则覆盖CWnd :: PreTranslateMessage。 如果仅使用Win API,则只需在调用TranslateMessage之前检查消息泵中包含的消息。
您可以捕获焦点更改事件,当编辑控件获得焦点事件时,只需将对话框默认按钮更改为* ID_BUTTON_SEND *按钮。 然后当焦点丢失时,删除此默认按钮标志。
这意味着每当用户在编辑控件具有输入时命中输入时,对话框将自动触发* ID_BUTTON_SEND *默认按钮。
您可以通过添加BS_DEFPUSHBUTTON到按钮的GWL_STYLE使按钮的默认按钮 。
只是重申KB文章。 对于选项1,您实际上可以简单地在WM_COMMAND中处理IDOK。
case WM_COMMAND:
if(wParam == IDOK){
ENTER WAS PRESSED
}else{
REGULAR EVENT HANDLING
}
这是检查Enter的更简单,更简洁的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.