我将一个窗口固定到桌面上,方法是将其作为包含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桌面的子项?
答案 0 :(得分:0)
使用Direct2D完成预期的工作(100%不透明),只要我将它与GDI(CreateDCRenderTarget或ID2D1GdiInteropRenderTarget)混合,整个透明度就会再次出现。对于“Direct2D和GDI互操作性”这么多 猜猜是时候将传统的GDI代码移植到Direct2D了......