MFC背景透明

2021-07-25 17:32:47 字數 1475 閱讀 4130

typedef bool (winapi *lpfnsetlayeredwindowattributes)(hwnd hwnd, colorref crkey, byte balpha, dword dwflags);

lpfnsetlayeredwindowattributes setlayeredwindowattributes; //設定成邊緣透明

colorref maskcolor = rgb(240, 240, 240);

hmodule huser32 = getmodulehandle(_t("user32.dll")); //載入動態鏈結庫

setlayeredwindowattributes = (lpfnsetlayeredwindowattributes)getprocaddress(huser32, "setlayeredwindowattributes"); //取得setlayeredwindowattributes函式指標 //為視窗加入ws_ex_layered擴充套件屬性

setwindowlong(this->getsafehwnd(), gwl_exstyle, getwindowlong(getsafehwnd(), gwl_exstyle)^ws_ex_layered); //呼叫setlayeredwinowattributes函式

/*setlayeredwindowattributes(this->getsafehwnd(), maskcolor, 192, lwa_colorkey); */

setlayeredwindowattributes(this->getsafehwnd(), maskcolor, 255, lwa_alpha | lwa_colorkey);

freelibrary(huser32); //釋放動態鏈

//lwa_alpha時:crkey引數無效,balpha引數有效;

//lwa_colorkey:窗體中的所有顏色為crkey的地方將變為透明,balpha引數無效。

//lwa_alpha | lwa_colorkey:crkey的地方將變為全透明,而其它地方根據balpha引數確定透明度。

colorref m_bgcolor = rgb(0, 0, 0);

bool m_btransparent = toggletransparent(m_bgcolor, 100, lwa_alpha);

bool toggletransparent(colorref crkey, byte balpha, dword dwflags)

else

setwindowlong(this->getsafehwnd(), gwl_exstyle, dwexstyle);

setlayeredwindowattributes( crkey, balpha, dwflags);

return bresult;

}

mfc 編輯框背景透明設定

前幾天和風在這裡討論關於cedit控制項的透明問題。主要的目的就是要做乙個有圖形背景的edit控制項,經過一番努,終於做出了乙個還算象樣的edit控制項。做乙個透明的edit控制項的主要問題是字元的輸出,在edit裡輸出的重新整理有幾個時機,乙個是在接收到鍵盤或滑鼠訊息的時候 還有就是在接收到wm ...

MFC將視窗的背景設為透明

在主窗體的oninitdialog函式中新增 設定分層屬性 setwindowlong getsafehwnd gwl exstyle,getwindowlong getsafehwnd gwl exstyle ws ex layered 設定透明度 0 completely transparent...

MFC 設定static(標籤)控制項背景透明

1 設定控制項的屬性transparent 為true 2 過載onctlcolor函式 在該函式體中加入以下 if pwnd getdlgctrlid idc x idc device stat為static控制項的id 3 解決重影問題,新增重新整理區域性背景的函式,該函式主要用於單獨重新整理所...