0

我的代码中有一个编辑控件(你可以在其中写东西),我希望当用户输入输入时(比如 - 用户名/密码的形式),它会做一些事情..

例如,当您登录一个站点并输入您的用户名并通过时,如果您单击 Enter,它会自动为您登录,而不是单击“连接”按钮...

我有以下代码:

ChatHwnd = CreateWindowEx(WS_EX_CLIENTEDGE, "Edit", NULL, WS_CHILD | WS_VSCROLL | WS_HSCROLL | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_LEFT | ES_MULTILINE | ES_WANTRETURN , 15, 15, 550, 300, hwnd, NULL, 
(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), NULL); // Creat chat log

它是用 Win API 编写的...

谢谢!

4

2 回答 2

2

从控件中删除 ES_WANTRETURN 样式,这样返回键将转到父对话框。在父对话框中处理 EN_KILLFOCUS 通知(在 WM_COMMAND 中)。通知附带的 wParam 会告诉您是否是您感兴趣的编辑控件。

于 2013-11-02T21:58:35.357 回答
0

如果您有一个对话框,则 Enter 键会以单独的方式自动处理。

如果您有自己的 Frame Control 并希望单独处理 Input,您有两种选择:

  1. 使用消息 Loop 和 PreTranslate(我使用 MFC 中的这个词)输入消息。
  2. 子类化您的控件以获取对控件接收的所有消息的访问权限。
  3. 您可以使用钩子(但那是过度杀伤)
于 2013-11-03T15:48:46.263 回答