我注意到当控件处于焦点时按下CTRL键时,RichEdit不会向父窗口发送消息。当父窗口处于活动状态时,一切正常。但是当光标在RichEdit中时,只有鼠标0x20 WM_SETCURSOR
消息可以正常。在没有控制键的情况下按下键时,发送0x111 WM_COMMAND
,当我尝试按下CTRL时,在此期间任何其他键如“S”用于实现保存功能,则不发送任何内容。有没有办法创建回调RichEdit或以其他方式捕获CTRL+S
?
Escape也不会向父窗口发送消息。
答案 0 :(得分:2)
找到如何设置回调到richedit。
DefEditProc = (WNDPROC)SetWindowLong(richeditWindow, GWL_WNDPROC, (long)&richEdit.EditKeyProc);
之前在代码中:
LRESULT EditKeyProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
if(uMsg == WM_KEYDOWN) {
if(wParam == 'S' && GetAsyncKeyState(VK_CONTROL));
return 0;
}
return CallWindowProc(DefEditProc, hwnd, uMsg, wParam, lParam);
}