因此,我想将背景设置为WINDOWCLASSX,包括alpha通道,但是我只看到了“RGB”宏;没有RGBA。

那么如何在hbrBackground上设置alpha?这是我的代码:

    WNDCLASSEX wincl;


wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof (WNDCLASSEX);

wincl.hIcon = LoadIcon (GetModuleHandle(0), MAKEINTRESOURCE(IDI_MYAPP));
wincl.hIconSm = LoadIcon (GetModuleHandle(0), MAKEINTRESOURCE(IDI_MYAPP));
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = MAKEINTRESOURCE(IDR_MAINFRAME);
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;

wincl.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);

在最后一行,我希望能够设置Alpha。

-谢谢你的帮助。

最佳答案

您不能在窗口类上使用背景笔刷创建Alpha通道。您必须改为将WS_EX_LAYERED样式应用于窗口,然后使用SetLayeredWindowAttributes()UpdateLayeredWindow()设置窗口的Alpha通道。阅读MSDN文档以获取更多详细信息:

Using Layered Windows

Layered Windows

09-25 21:56