1. 程式人生 > >vc透明對話方塊

vc透明對話方塊

在OnInitDialog()中新增程式碼

1、vs2003以上

	//VS2003以上版本  
	SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE)|WS_EX_LAYERED);  
	SetLayeredWindowAttributes(0,200,LWA_ALPHA);

2、vc6.0

	SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE)|0x00080000);  
	HINSTANCE hInst = LoadLibrary(_T("User32.dll"));  
	if (hInst)  
	{  
	    typedef BOOL (WINAPI *MyFun)(HWND,COLORREF,BYTE,DWORD);  
	    MyFun myfun = NULL;  
	    myfun = (MyFun)GetProcAddress(hInst, "SetLayeredWindowAttributes");
	    //"190"為設定的透明度,範圍0-255, 0完全透明,255不透明
	    if (myfun) myfun(GetSafeHwnd(),0,190,2);  
	    FreeLibrary(hInst);  
	} 

注:這種新增方式為對話方塊和上面的所有控制元件一起透明,然而實際使用中,多數情況下想讓對話方塊背景透明,靜態文字背景透明,而對話方塊上的所有控制元件不透明,這種實現方法在下一篇文章中介紹。