我有一个程序,它有两个窗口,一个用于显示图形(称之为“图形窗口”),另一个用于输入和显示文本(称之为“文本窗口”)。文本窗口是图形窗口的子项。只要文本窗口突出显示,程序就会正确处理击键,但如果图形窗口突出显示,则忽略击键。我想要做的是安排文本窗口来处理击键,即使图形窗口被突出显示。
问题解决了:
文本窗口本身就是富编辑窗口的父级。
在图形窗口的消息处理程序中,我添加了:
case WM_CHAR:
case WM_KEYDOWN:
case WM_KEYUP:
case WM_SYSKEYDOWN:
case WM_SYSKEYUP:
SendMessage(handle_of_rich_edit_window, message, wParam, lParam);
break;
我之前曾尝试将消息发送到文本窗口,但这似乎不起作用(我不明白为什么)。将消息直接发送到richedit窗口似乎可以解决问题。
答案 0 :(得分:0)
将每个窗口的击键路由到公共处理程序或使用Win32的低级窗口钩子SetWindowsHookEx API
答案 1 :(得分:0)
如果您可以访问两个窗口中的每个源代码,那么只需为适用的WM消息实现一个通用处理程序。但是,听起来你出于某些原因无法做到这一点(?)。
对于每个可以接收消息的Window,您都可以实现subclassing。
这意味着您使用自定义窗口替换窗口的标准Wndproc消息处理程序。在此自定义处理程序中,您可以决定要以不同方式处理哪些邮件。对于您不希望以不同方式处理的所有消息,您可以调用默认的Wndproc。
这允许您“重载”窗口的默认行为,或者在特定事件上添加额外功能,然后执行默认行为。如果您无法访问Wndproc本身的源代码(例如使用RAD工具时),则会特别方便。
因此,对于您的具体情况,您可以为每个窗口创建子类,获取您感兴趣的消息,然后调用公共处理程序。