代码之家  ›  专栏  ›  技术社区  ›  Yuh

DwmExtendedFrameIntoClientArea在Windows 11上不工作[关闭]

  •  -2
  • Yuh  · 技术社区  · 1 年前

    我正在尝试使用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);
    
    0 回复  |  直到 1 年前