在主窗體的oninitdialog函式中新增:
// 設定分層屬性
setwindowlong(getsafehwnd(),gwl_exstyle,getwindowlong(getsafehwnd(),gwl_exstyle)|ws_ex_layered);
// 設定透明度 0 - completely transparent 255 - opaque
::setlayeredwindowattributes(getsafehwnd(),0,40,lwa_alpha);
setlayeredwindowattributes 函式的使用方法
函式的原型為
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
其中hwnd是透明窗體的控制代碼,// mfc中的cwnd類沒有改引數了
crkey為掩碼的顏色,可以用rgb(r,g,b)來指定。// colorkey
balpha是透明度,取值範圍是(0,255),其中0代表全透明,255代表不透明。
dwflags是透明方式,可以取兩個值:
當取值為lwa_alpha時,crkey引數無效,balpha引數有效;
當取值為lwa_colorkey時,窗體中的所有顏色為crkey的地方將變為透明,balpha引數無效。
lwa_alpha = 0x2
lwa_colorkey=0x1
也可以取兩個值的組合:lwa_alpha or lwa_colorkey。這樣crkey的地方將變為全透明,而其它地方根據balpha引數確定透明度。
setlayeredwindowattributes(0, 200, lwa_alpha);
注意:
要使使窗體擁有透明效果,首先要使視窗具有ws_ex_layered擴充套件屬性,方法:
在函式oninitdialog()中加入下面的**
setwindowlong(m_hwnd,gwl_exstyle,getwindowlong(this->getsafehwnd(),gwl_exstyle)|ws_ex_layered);
MFC背景透明
typedef bool winapi lpfnsetlayeredwindowattributes hwnd hwnd,colorref crkey,byte balpha,dword dwflags lpfnsetlayeredwindowattributes setlayeredwindowa...
在C 中怎麼將label標籤的背景設為透明
以上內容 侵刪。使用 1.lblpstart.backcolor color.transparent 就可以讓lable控制項的背景色 透明,可以看到擺放lable容器的背景色 但這個背景色 不一定是窗體的背景色。2.from1.controls.add lable1 lable1.backcolo...
CSS彈出背景半透明視窗
script function if submit index 1 function pupopen 禁止瀏覽器滾屏 function pupclose script body bg popbox style 終於搞定這個效果了,ie和ff,op均可以 先說原理 兩個層,乙個高度和寬度都是100 另...