我正在尝试使用DwmExtendFrameIntoClientArea使我的覆盖背景透明。我尝试了以下代码:
但所有这些都是在黑色图像上绘制覆盖图,如果我将SetLayeredWindowAttributes中的“255”属性更改为0,则不会绘制任何内容。
也许这与我的电脑运行Windows11有关。
其他人有想法吗?你可能无法复制这个。
WNDCLASSEXW wc = { sizeof(wc), CS_VREDRAW | CS_HREDRAW, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, L"Example", NULL };
::RegisterClassExW(&wc);
HWND hwnd = ::CreateWindowExW(WS_EX_TOPMOST | WS_EX_TOOLWINDOW | WS_EX_LAYERED, wc.lpszClassName, L"Example", WS_POPUP, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), NULL, NULL, wc.hInstance, NULL);
SetLayeredWindowAttributes(hwnd, RGB(0, 0, 0), 255, LWA_ALPHA);
MARGINS margin = { -1 };
DwmExtendFrameIntoClientArea(hwnd, &margin);