VC窗口透明下載本文源代碼
示例代碼運(yùn)行效果圖 二,、簡(jiǎn)單介紹一下SetLayeredWindowAttributes:(詳見(jiàn)msdn) BOOL SetLayeredWindowAttributes( HWND hwnd, // handle to the layered window COLORREF crKey, // specifies the color key BYTE bAlpha, // value for the blend function DWORD dwFlags // action );< Requirements> Windows NT/2000/XP: Included in Windows 2000 and later. Windows 95/98/Me: Unsupported. Header: Declared in Winuser.h; include Windows.h. Library: Use User32.lib. 一些常量: WS_EX_LAYERED = 0x80000; LWA_ALPHA = 0x2; LWA_COLORKEY=0x1 其中dwFlags有LWA_ALPHA和LWA_COLORKEY LWA_ALPHA被設(shè)置的話,通過(guò)bAlpha決定透明度. LWA_COLORKEY被設(shè)置的話,則指定被透明掉的顏色為crKey,其他顏色則正常顯示. 注:要使使窗體擁有透明效果,首先要有WS_EX_LAYERED擴(kuò)展屬性(舊sdk也沒(méi)有的). 三、例子代碼: 在OnInitDialog()加入: //加入WS_EX_LAYERED擴(kuò)展屬性 SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE, GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000); HINSTANCE hInst = LoadLibrary("User32.DLL"); if(hInst) { typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); MYFUNC fun = NULL; //取得SetLayeredWindowAttributes函數(shù)指針 fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes"); if(fun)fun(this->GetSafeHwnd(),0,128,2); FreeLibrary(hInst); }唉!如果裝了最新sdk就不用那么麻煩了! 怎么樣,效果不錯(cuò)吧!稍加修改還可以作出淡出淡入的效果. 注意第三個(gè)參數(shù)(128)不要取得太小了,為0的話完全透明,你就找不到窗體了! 小小心得,一吐為快.希望對(duì)初學(xué)者有所幫助.如有不妥,歡迎指正. |
|
來(lái)自: 魔音工作室 > 《學(xué)習(xí)編程》