MFC將視窗的背景設為透明

2021-09-27 19:23:24 字數 1267 閱讀 7381

在主窗體的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 另...