禁用"桌面的透明度"儿童的窗户

时间:2016-07-20 13:53:38

标签: c++ c windows winapi gdi

我将一个窗口固定到桌面上,方法是将其作为包含Windows 7 Aero中桌面FolderView的WorkerW窗口的子窗口。到目前为止,这完全适用于将窗口固定到桌面,但窗口具有某种透明度,它没有作为最顶层的窗口。Instead of a dark background RGB(0,21,32) the actual desktop background/wallpaper shines through

case WM_PAINT:
    hdc = BeginPaint(hWnd, &ps);
    GetClientRect(hWnd, &cr);
    SelectObject(hdc, GetStockObject(DC_BRUSH));
    SetDCBrushColor(hdc, RGB(0,21,32));
    FillRect(hdc, &cr, (HBRUSH) GetStockObject(DC_BRUSH));

客户区通过GDI绘制,我尝试了一切我想到的使窗口完全不透明:SetBkColor,SetLayeredWindowAttributes,WNDCLASSEX.style = CS_PARENTDC,使用RGBA颜色(仅用于获得更高的透明度,高达100% ,但将其设置为不透明并不会改变结果)

有没有办法将不透明窗口绘制为Aero桌面的子项?

1 个答案:

答案 0 :(得分:0)

使用Direct2D完成预期的工作(100%不透明),只要我将它与GDI(CreateDCRenderTarget或ID2D1GdiInteropRenderTarget)混合,整个透明度就会再次出现。对于“Direct2D和GDI互操作性”这么多 猜猜是时候将传统的GDI代码移植到Direct2D了......