如何在用户在文本框中输入内容时收到按下“回车”键的通知?

问题描述 投票:0回答:1

一种方法是子类化“编辑”控件并更改其 WndProc。

还有其他办法吗?

c++ winapi
1个回答
0
投票

正如 IInspectable 和 Raymond Chen 所说,如果您使用

CreateWindowEx
,则对控件进行子类化并在消息循环中获取
WM_KEYDOWN
VK_RETURN
是唯一的方法。

WNDPROC defEditProc;

LRESULT CALLBACK subEditProc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam) {
    switch (msg) {
    case WM_KEYDOWN:
        switch (wParam) {
        case VK_RETURN:
            // do ...
            break;
           
        }
    default:
        return CallWindowProc(defEditProc, wnd, msg, wParam, lParam);
    }
    return 0;
}

defEditProc = (WNDPROC)SetWindowLongPtr(hYourEdit, GWLP_WNDPROC, (LONG_PTR)subEditProc);
© www.soinside.com 2019 - 2024. All rights reserved.