SetLayeredWindowAttributes设置窗口透明与不透明的具体代码
时间: 2024-03-01 15:54:30 浏览: 36
好的,下面是一个使用 `SetLayeredWindowAttributes` 函数将窗口设置为半透明的示例代码:
```c++
#include <Windows.h>
// 窗口过程函数
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_CREATE:
// 设置窗口样式为 WS_EX_LAYERED 扩展样式
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
// 设置窗口为半透明
SetLayeredWindowAttributes(hwnd, 0, 128, LWA_ALPHA);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
// 程序入口函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 注册窗口类
WNDCLASS wc = { 0 };
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = L"TransparentWindow";
RegisterClass(&wc);
// 创建窗口
HWND hwnd = CreateWindowEx(WS_EX_LAYERED, L"TransparentWindow", L"Transparent Window",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 400, 300, NULL, NULL, hInstance, NULL);
if (hwnd == NULL)
{
return 0;
}
// 显示窗口
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
// 消息循环
MSG msg = { 0 };
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
```
在这个示例代码中,我们创建了一个名为 `TransparentWindow` 的窗口,并将其样式设置为 `WS_EX_LAYERED` 扩展样式,以便使用 `SetLayeredWindowAttributes` 函数来设置窗口的透明度。在窗口创建时,我们调用了 `SetLayeredWindowAttributes` 函数,将窗口的 Alpha 值设置为 128,从而使窗口半透明。需要注意的是,我们在 `SetLayeredWindowAttributes` 函数中指定的第一个参数为 0,表示对整个窗口进行操作。
当窗口收到 `WM_DESTROY` 消息时,我们使用 `PostQuitMessage` 函数将一个退出消息发送到消息队列,并在消息循环中退出程序。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)