Aeroガラスは、それを利用しようとすると多くの人に問題を引き起こします。アルファ値が255の場合は、追加のぼかしを使用して描画するDWMでは透明として扱われるようです。クライアントエリアの一部でAeroガラスを使用し、残りの部分は不透明として処理する必要があるため、適切にレンダリングされない一般的なコントロールの問題に対処する必要はありません。
MSDNにはDwmEnableBlurBehindWindow
、クライアント領域の一部をDWMによってぼやけたものとしてマークできる関数がリストされています。ウィンドウの領域へのハンドルをDWM_BLURBEHIND
持つポインタを取ります。HRGN
この関数を使用すると、ウィンドウ全体が追加ブレンドで透明になりますが、渡したウィンドウの領域のみDwmEnableBlurBehindWindow
がぼやけます。ウィンドウの残りの部分が透明にならないようにする方法はありますか?
私が持っているものは少し似ています:
blur.dwFlags = DWM_BB_ENABLE | DWM_BB_BLURREGION;
blur.hRgnBlur = CreateRectRgn(0, 0, 90, 90);
blur.fEnable = true;
DwmEnableBlurBehindWindow(hwnd, &blur);
RECT rect;
GetClientArea(&rect);
FillRect(hdc, &rect, CreateSolidBrush(0));