一种方法是子类化“编辑”控件并更改其 WndProc。
还有其他办法吗?
正如 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);