2

そのため、アルファチャンネルを含む背景を設定したいWINDOWCLASSXがありますが、「RGB」マクロしか見ませんでした。RGBAなし。

では、hbrBackground にアルファを設定するにはどうすればよいでしょうか。これが私のコードです:

    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);

その最後の行で、アルファを設定できるようにしたいと考えています。

-助けてくれてありがとう。

4

2 に答える 2

2

ウィンドウクラスの背景ブラシを使用してアルファチャネルを作成することはできません。WS_EX_LAYERED代わりにスタイルをウィンドウに適用してから、SetLayeredWindowAttributes()またはUpdateLayeredWindow()を使用してウィンドウのアルファチャネルを設定する必要があります。詳細については、MSDNのドキュメントをお読みください。

レイヤードウィンドウの使用

レイヤードウィンドウ

于 2012-04-05T04:42:36.497 に答える
1

これは私にとってはうまくいきました:

// Set WS_EX_LAYERED on this window 
SetWindowLong(g_mainWnd, GWL_EXSTYLE, GetWindowLong(g_mainWnd, GWL_EXSTYLE) | WS_EX_LAYERED);

// Make this window 70% alpha
SetLayeredWindowAttributes(g_mainWnd, 0, (255 * 70) / 100, LWA_ALPHA);

変数は、対応するウィンドウへのg_mainWnd参照です (私の場合、HWND 変数)。

于 2015-04-30T12:56:08.957 に答える