当前位置:  开发笔记 > 编程语言 > 正文

使用SetParent将HWND嵌入到外部进程中

如何解决《使用SetParent将HWND嵌入到外部进程中》经验,为你挑选了1个好方法。

我正在尝试使用SetParent函数将我的进程中的窗口嵌入到外部进程的窗口中,并且遇到了一些我希望有人可以帮助我的问题.首先,这里是我正在做的将窗口嵌入应用程序的大纲:

HWND myWindow; //Handle to my application window
HWND externalWindow; //Handle to external application window

SetParent(myWindow,externalWindow);

//Remove WS_POPUP style and add WS_CHILD style
DWORD style = GetWindowLong(myWindow,GWL_STYLE);
style = style & ~(WS_POPUP);
style = style | WS_CHILD;
SetWindowLong(myWindow,GWL_STYLE,style);

此代码有效,我的窗口出现在另一个应用程序中,但引入了以下问题:

当我的窗口获得输入焦点时,外部进程的主应用程序窗口失去焦点(即标题栏改变颜色)

当我的窗口具有焦点时,主应用程序的键盘快捷键命令不起作用

有人知道解决方法吗?我希望我的窗口被视为主应用程序的另一个子窗口.



1> flashk..:

好吧,我终于找到了我的问题的答案.

要解决主应用程序失去焦点的问题,您需要使用AttachThreadInput函数将嵌入式窗口线程附加到主应用程序线程.

此外,可以使用TranslateAccelerator函数响应WM_KEYDOWN消息,以确保触发主应用程序的加速器消息.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有