gpt4 book ai didi

Win32窗口设置为透明

转载 作者:我是一只小鸟 更新时间:2023-03-09 14:31:20 51 4
gpt4 key购买 nike

可以使用以下方法将Win32窗口设置为透明:

  1. 定义窗口类时,在WNDCLASSEX结构体中设置hbrBackground成员为NULL.

  2. 在窗口创建时,使用WS_EX_LAYERED风格和SetLayeredWindowAttributes函数将窗口设置为透明:

                      
                        HWND hwnd = CreateWindowEx(WS_EX_LAYERED, szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 
                         500,  100,  NULL,  NULL, hInstance,  NULL); SetLayeredWindowAttributes(hwnd,  0,  255, LWA_ALPHA);       
                      
                    

其中,第二个参数指定颜色偏移量,第三个参数指定透明度,范围从0(完全透明)到255(完全不透明).

  1. 在窗口的WM_PAINT消息处理函数中,使用CreateCompatibleDC函数创建一个与窗口DC兼容的内存DC,并将要绘制的图形绘制到该内存DC上。然后使用UpdateLayeredWindow函数将内存DC中的内容复制到窗口DC中。
                      
                         case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps);  // 创建与窗口DC兼容的内存DC HDC memDC = CreateCompatibleDC(hdc);  // 创建一个与窗口大小相同的位图 HBITMAP memBmp = CreateCompatibleBitmap(hdc,  500,  100);  // 将位图选入内存DC HBITMAP oldBmp = (HBITMAP)SelectObject(memDC, memBmp);  // 在内存DC中绘制图形  // ...  // 使用UpdateLayeredWindow函数将内存DC中的内容复制到窗口DC中 POINT ptSrc = {  0,  0 }; SIZE  size = {  500,  100 }; BLENDFUNCTION blend = { AC_SRC_OVER,  0,  255, AC_SRC_ALPHA }; POINT ptDst = {  0,  0 }; UpdateLayeredWindow(hwnd, hdc, &ptDst, &  size, memDC, &ptSrc,  0, &blend, ULW_ALPHA);  // 恢复原来的位图 SelectObject(memDC, oldBmp);  // 释放内存DC和位图 DeleteDC(memDC); DeleteObject(memBmp); EndPaint(hwnd, &ps); }  break;                       
                      
                    

以上代码中,在内存DC中绘制图形的过程自行实现。另外,由于UpdateLayeredWindow函数需要使用内存DC和位图,因此需要在WM_DESTROY消息处理函数中释放这些资源:

                      
                         case  WM_DESTROY  : {  PostQuitMessage(  0);  DeleteObject(hBrush);  DeleteObject(hPen);  DeleteObject(hFont);  DeleteObject(hImage);  // 释放内存  DC和位图  HDC memDC =  GetDC(hwnd);  ReleaseDC(hwnd, memDC); }  break;               
                      
                    

最后此篇关于Win32窗口设置为透明的文章就讲到这里了,如果你想了解更多关于Win32窗口设置为透明的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com