c++ 实现一个透明窗口,并鼠标穿透 请停供2个代码例子
时间: 2024-03-19 10:44:03 浏览: 60
下面是两种实现方法:
方法一:使用 SetWindowLong 函数实现透明窗口,同时使用 WS_EX_TRANSPARENT 属性实现鼠标穿透。
```c++
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
// 创建窗口
HWND hwnd = CreateWindowEx(
WS_EX_LAYERED | WS_EX_TRANSPARENT, // 扩展窗口样式,实现透明和鼠标穿透
"MyWindowClass",
"透明窗口",
WS_POPUP, // 弹出式窗口
0, 0,
500, 500,
NULL,
NULL,
hInstance,
NULL
);
// 设置窗口透明(参数 2 表示透明度,0 表示完全透明,255 表示完全不透明)
SetLayeredWindowAttributes(hwnd, 0, 0, LWA_ALPHA);
// 显示窗口
ShowWindow(hwnd, SW_SHOW);
// 消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
```
方法二:使用 SetWindowRgn 函数实现透明窗口,同时使用 WS_EX_TRANSPARENT 属性实现鼠标穿透。
```c++
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
// 创建窗口
HWND hwnd = CreateWindowEx(
WS_EX_LAYERED | WS_EX_TRANSPARENT, // 扩展窗口样式,实现透明和鼠标穿透
"MyWindowClass",
"透明窗口",
WS_POPUP, // 弹出式窗口
0, 0,
500, 500,
NULL,
NULL,
hInstance,
NULL
);
// 创建圆形区域
HRGN hRgn = CreateEllipticRgn(0, 0, 500, 500);
// 设置窗口区域
SetWindowRgn(hwnd, hRgn, TRUE);
// 显示窗口
ShowWindow(hwnd, SW_SHOW);
// 消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)