繁体   English   中英

win32 c ++在子类化的编辑控件中检测'enter'?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM