国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
透明窗體的實(shí)現(xiàn) - 博客大巴

透明窗體的實(shí)現(xiàn) - [日記]

版權(quán)聲明:轉(zhuǎn)載時(shí)請(qǐng)以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
http://zuowenp.blogbus.com/logs/80799819.html

要在windows下實(shí)現(xiàn)透明窗體,有兩個(gè)函數(shù)可以使用,一個(gè)是SetLayeredWindowAttributes ,另一個(gè)是UpdateLayeredWindow 。

首先,使用這兩個(gè)函數(shù),窗口必須是WS_EX_LAYERED 屬性,可以用SetWindowLong來(lái)聲明。

SetLayeredWindowAttributes (分層窗口),MSDN的介紹如下。

The SetLayeredWindowAttributes function sets the opacity and transparency color key of a layered window.

Syntax

              BOOL SetLayeredWindowAttributes(  

              HWND hwnd ,

              COLORREF crKey ,

              BYTE bAlpha ,

              DWORD dwFlags );

 

 

其中hwnd是窗口的句柄,crKey是掩碼,即要透明的顏色,用RGB(r,g,b)來(lái)表示,bAlpha是透明度,取值在0-255之間,0為完全透明,255為完全不透明。dwFlags是標(biāo)志位,用它的值表示透明的方式

LWA_COLORKEY            0x00000001     //表示用掩碼顏色來(lái)透明
LWA_ALPHA               0x00000002        //表示用透明度來(lái)透明

比如要讓一個(gè)窗口的黑色部分透明,就可以用

SetLayeredWindowAttributes(m_hWnd,RGB(0,0,0),0,LWA_COLORKEY);

由于標(biāo)志位是LWA_COLORKEY,因此bAlph a是不起作用的。如果是LWA_ALPHA的話(huà),那么整個(gè)窗口都會(huì)根據(jù)bAlpha的大小來(lái)顯示透明度。

顏色透明的地方鼠標(biāo)可以穿透,可以在很方便的做出異形窗體。

The UpdateLayeredWindow function updates the position, size, shape, content, and translucency of a layered window.

Syntax

BOOL UpdateLayeredWindow(   
    HWND hwnd,
    HDC hdcDst,
    POINT *pptDst,
    SIZE *psize,
    HDC hdcSrc,
    POINT *pptSrc,
    COLORREF crKey,
    BLENDFUNCTION *pblend,
    DWORD dwFlags
);

hwnd為窗口句柄。

hdcDst為目的DC句柄,可以用GetWindowDC(hwnd)來(lái)取得。

pptDst用來(lái)指定新的分層窗口的起始位置,如果要保存位置不變,則可以為NULL。

psize用來(lái)指定分層窗口新的大小。如果不改變窗口大小,則可以為NULL。

hdcSrcd為如果來(lái)源DC句柄,如果不進(jìn)行繪制,則可以為NULL。

pptSrc用來(lái)指定來(lái)源的屏幕位置。

crKey是掩碼,可以用RGB(r,g,b)來(lái)生成。

pblend指向一個(gè)BLENDFUNCTION結(jié)構(gòu),如下定義

  typedef struct _BLENDFUNCTION
  {
      BYTE   BlendOp;     // 指定源混合操作。目前,唯一的源和目標(biāo)混合,已定義的AC_SRC_OVER。
      BYTE   BlendFlags;  //必須是0。
      BYTE   SourceConstantAlpha; //透明度,取值0-255之間。
      BYTE   AlphaFormat; //可以定義為AC_SRC_ALPHA,表示位圖有Alpha通道
  }BLENDFUNCTION,*PBLENDFUNCTION;

dwFlags為標(biāo)志位,可以取以下值

ULW_ALPHA 使用pblend為混合功能。

ULW_COLORKEY 使用crKey值為顏色的透明度?! ?/p>

ULW_OPAQUE 繪制一個(gè)不透明分層窗口。

要注意的是,一旦使用了UpdateLayeredWindow函數(shù),那么它將接管窗口的繪制,不會(huì)響應(yīng)WM_PAINT等消息,而窗口上面的控件也不會(huì)顯示。如果你設(shè)定了pptDst和psize的話(huà),就等于調(diào)用了setwindowpos函數(shù)改變了窗口的大小,這點(diǎn)要注意。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Photoshop合成華麗的夜景婚片
打造一張漂亮的古典美女插畫(huà)|YlmF 美化風(fēng)格區(qū)|Windows 專(zhuān)區(qū) - 雨林木風(fēng)交流論...
Photoshop制作漂亮的紅色光暈
ps給婚片合成華麗背景教程
Photoshop打造柔美的藍(lán)色魅力簽名
立體黃金字教程
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服