1. 程式人生 > >【MFC】基於對話方塊的視窗置底

【MFC】基於對話方塊的視窗置底

環境:win10,vs2017

之前發過一篇視窗置底的文章,最近找到了一種新的方法,感覺效果更好一點。

思路就是,將自己程式的父視窗設為桌面,程式就會嵌入到桌面內部,便可實現置頂。

程式碼如下

將置底部分新增到OnInitDialog函式裡面:

BOOL CDesktopEvaDlg::OnInitDialog()
{
        //...

	//視窗置底
	HWND hDesktop = ::FindWindow(_T("Progman"), NULL);
	hDesktop = ::GetWindow(hDesktop, GW_CHILD);
	CWnd* pWndDesktop = CWnd::FromHandle(hDesktop);
	this->SetParent(pWndDesktop);

	//...
}

 

以上功能能滿足絕大部分情況。

但經過仍有部分情況會導致置底失效。

有遇到這個情況,可以參考我另一篇部落格https://blog.csdn.net/h84121599/article/details/82503464