兩個窗體都是爭搶置頂焦點問題

背景:筆者在做一個項目,客戶端本身是置頂的,但是同時需要集成POS-MIS的組件的時候發現,MIS自己有一個界面需要置頂,這樣的話需要系統會出現兩個窗體同時搶置頂權限的情況

 

在調用MIS動態庫的時候起一個進程,獲取MIS窗體句柄,然後將MIS窗體設置爲客戶端窗體的子窗體,再利用SetWindowPos將MIS窗體置頂

 

 

廢話不多說上代碼


#include <Windows.h>


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);
}

 

 

切忌一定要把需要置頂的窗體設置爲當前置頂窗體的子窗體,再將其置頂纔可生效!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章