gpt4 book ai didi

VC实现A进程窗口嵌入到B进程窗口中显示的方法

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章VC实现A进程窗口嵌入到B进程窗口中显示的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文通过一个Demo示例讲述把A应用程序嵌入到B应用程序中显示的方法.

主要代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
//在B应用启动时创建A进程
CreateProcess(_T( "A.exe" ),NULL,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,NULL,NULL);
Sleep(30);
HWND hWndChild = FindWindow(_T( "AAA" ),_T( "AAA" ));
while (!hWndChild)
{
   hWndChild = FindWindow(_T( "AAA" ),_T( "AAA" ));
}
//移动A进程窗口位置
MoveWindow(hWndChild,80,20,240,320,TRUE);
//A进程窗口嵌入B进程窗口中
SetParent(hWndChild,hWnd);

An application can use the SetParent function to set the parent window of a pop-up, overlapped, or child window. The new parent window and the child window must belong to the same application。 这是从msdn里面对SetParent的使用描述,说SetParent要嵌入的窗口必须和被嵌入的窗口属于同一个应用程序,其实不然,不过SetParent返回的确实是一个Null,这是因为A进程中的窗口并不存在父窗口,而SetParent调用后会返回父窗口的句柄,故返回Null。但是却不会影响A进程窗口嵌入.

在B进程窗口显示时收到的WM_ACTIVE中先会收到WA_ACTIVE或者WA_CLICKACTIVE,然后也会收到WA_INACTIVE参数,也就是说在某个时候,B进程没有被置为最前窗口,这应该是当调用SetParent时,影响了B进程窗口。如果你希望B进程窗口收到WM_ACTIVE消息,必须调用SetForegroundWindow(hWnd),如果当前窗口不是最前窗口时,退出或者最小化时不会收到WM_ACTIVE消息中的WA_INACTIVE。尤其做嵌套应用程序的代码中,应该牢记于心.

除此以外,当使用SetParent(hWndChild,hWnd)把A进程到B进程窗口中时,这时使用FindWindow查询到A进程的窗口句柄为null.

最后此篇关于VC实现A进程窗口嵌入到B进程窗口中显示的方法的文章就讲到这里了,如果你想了解更多关于VC实现A进程窗口嵌入到B进程窗口中显示的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com