I want to create an edit control that behaves in the following manner: While user is entering text in the edit control, when enter is pressed by the user, it clicks a button. I searched a lot but found nothing that helps. How to do it in C Win32 API.
CodePudding user response:
The short answer is: "don't do that."
Create a dialog containing the edit control and button. Make sure the edit control's ES_WANTRETURN style is turned off, and the button's BS_DEFPUSHBUTTON style is turned on.
ES_WANTRETURN controls whether the edit control processes a carriage return/enter key (VK_RETURN keystroke). With it turned on, the edit control processes the keystroke itself (it becomes a new-line in the edit control). Probably obvious, but ES_WANTRETURN is generally only useful for a multi-line edit control.
With ES_WANTRETURN turned off, the enter/return keystroke is passed to the parent (the dialog box). That will process an enter as pressing the default button (if there is one).
CodePudding user response:
Simply give the Button control the BS_DEFPUSHBUTTON style, then it will react to Enter presses automatically.
Otherwise, you would have to subclass the Edit control to catch WM_KEY(DOWN|UP) messages sent to it (don't catch them in the parent window's WndProc), check for VK_RETURN, and if detected then send a BM_CLICK message to the Button control.
