一、設置窗體透明度和指定透明色(如指定了黑色,即所有黑色的部分將會變得透明)
DWORD dwExStyle=GetWindowLong(m_hWnd,GWL_EXSTYLE);
if((dwExStyle&WS_EX_LAYERED)!=WS_EX_LAYERED)
SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle|WS_EX_LAYERED);
HMODULE hInst = LoadLibrary(_T("User32.DLL"));
typedef BOOL (WINAPI *MYFUNC)(HWND, COLORREF, BYTE, DWORD);
MYFUNC SetLayeredWindowAttributes = NULL;
SetLayeredWindowAttributes = (MYFUNC)::GetProcAddress(hInst, "SetLayeredWindowAttributes");
if(SetLayeredWindowAttributes)
{
if(!SetLayeredWindowAttributes(m_hWnd, RGB(0,0,0), 150, LWA_COLORKEY|LWA_ALPHA))
{
assert(false && _T("SetLayeredWindowAttributes 失敗了!"));
}
}
上面的代碼:1、首先讓WINDOWSTYLE加上GWL_EXSTYLE樣式,因為SetLayeredWindowAttributes只能對這種樣式操作,而只有PUPUP類型的窗體才能更成這種樣式,所以也就是說,只有彈出窗體才能用這個函數設置透明度和透明色,主窗體是不行的
DUILIB 篇
一、皮膚路徑更改問題
一旦確定了皮膚路徑,中途是不能更改皮膚路徑的,這樣會導致在其它位置的圖片找不到!!!!
二、如何實現拖動窗體
在XML中,給Window,加上caption屬性,最后一個值就指定可拖動的標題欄的大小,標題欄的頂端默認是窗體頂部
代碼:
三、圖片的corner屬性,九宮格拉伸
首先,要拉伸,必然圖片要比窗體要小,才能看到拉伸效果,對于DUILIB的拉伸,說是參考了安桌的九宮格,但我試了試,應該沒那么高級,也沒搞清楚到底是怎么回事,反正這回,我試驗著各種數據,實現了我想要的效果。貼幾個博客吧,對我有很大的啟發作用。