如何检测子窗口时是否按下了ctrl键。 richedit是焦点?

时间:2013-01-17 17:52:09

标签: c++ winapi windows-messages richedit

我注意到当控件处于焦点时按下CTRL键时,RichEdit不会向父窗口发送消息。当父窗口处于活动状态时,一切正常。但是当光标在RichEdit中时,只有鼠标0x20 WM_SETCURSOR消息可以正常。在没有控制键的情况下按下键时,发送0x111 WM_COMMAND,当我尝试按下CTRL时,在此期间任何其他键如“S”用于实现保存功能,则不发送任何内容。有没有办法创建回调RichEdit或以其他方式捕获CTRL+S

Escape也不会向父窗口发送消息。

1 个答案:

答案 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);
}
相关问题