两个窗体都是争抢置顶焦点问题

背景:笔者在做一个项目,客户端本身是置顶的,但是同时需要集成POS-MIS的组件的时候发现,MIS自己有一个界面需要置顶,这样的话需要系统会出现两个窗体同时抢置顶权限的情况

 

在调用MIS动态库的时候起一个进程,获取MIS窗体句柄,然后将MIS窗体设置为客户端窗体的子窗体,再利用SetWindowPos将MIS窗体置顶

 

 

废话不多说上代码


#include 


DWORD WINAPI TopMost(LPVOID lpParamter)
{
	HWND hMis ;
	HWND hBrowser;
	do
	{
		hMis = FindWindow(NULL, L"APP_SOFTPOS");//获取父窗体句柄
		if(hMis){
			int cx = ::GetSystemMetrics(SM_CXSCREEN);
			int cy = ::GetSystemMetrics(SM_CYSCREEN);
			hBrowser = FindWindow(NULL,L"sinosoft");

			SetParent(hMis,hBrowser);

			SetWindowPos(hMis,HWND_TOPMOST,0,0,cx,cy,SWP_NOZORDER|SWP_NOMOVE);//窗口置顶 SWP_NOACTIVATE or SWP_NOMOVE  or  SWP_NOSIZE

		}

	} while (NULL==hMis);
	return 0L;
}


void main(){

    HANDLE hThread = CreateThread(NULL, 0, TopMost, NULL, 0, NULL);

     CloseHandle(hThread);
}

 

 

切忌一定要把需要置顶的窗体设置为当前置顶窗体的子窗体,再将其置顶才可生效!!!!

你可能感兴趣的:(C++,多线程,windows,窗体置顶)