【发布时间】:2012-11-07 15:02:04
【问题描述】:
我有一个生成子进程的 win32 主应用程序。
目前我使用 CreateWindowEx 在主应用程序中创建一个 HWND,然后生成一个子进程。然后子进程使用 FindWindow 查找 HWND。我想在子进程中处理此 HWND 的 Window 消息(例如 WM_SIZE、WM_SETFOCUS 等),因此我尝试在子进程中设置 GWLP_WNDPROC 属性,但出现访问被拒绝错误,这是合理的。
我考虑直接在子进程中创建一个 HWND,但是当单击窗口时,主应用程序失去焦点,这对于我的用例来说是不可接受的。
有没有人建议如何做才能将注意力集中在主应用程序上,同时让子进程处理消息?
【问题讨论】:
-
即使你可以从另一个进程中更改窗口过程,它也无济于事,因为子应用程序中的函数指针在主进程中是无效的,所以主进程将简单地崩溃下一个它收到消息的时间。为什么不让子进程向主进程的窗口发送消息说“请更改您的 WM_SIZE 和 WM_SETFOCUS 行为”?
-
因为所有的消息处理都将在主应用程序中完成。子进程是自包含的,并且总是有一个与之关联的 HWND。主应用程序可以产生多个子进程。我的理想方案是让子进程创建 HWND,但单击它不会失去对主应用程序的关注。
-
我怀疑您无法使这项工作令您满意。您通过整个方案试图解决的问题是什么,可能有更好的方法?
-
请参阅我对 marcin_j 的回答的评论,了解我正在尝试做什么。