リージョン付きブラーでクライアント領域外を指定してみた。

公開:2012-02-23 06:03
更新:2020-02-15 04:37
カテゴリ:dwm,c++,directx,windowラッパーライブラリ,windows

Nyaruruさんの情報を元にリージョン付きブラーで、リージョンをクライアント領域外を指定してみた。


    //Create and populate the BlurBehind structre
    DWM_BLURBEHIND bb = {0};
    //Enable Blur Behind and Blur Region;
    bb.dwFlags = DWM_BB_ENABLE | DWM_BB_BLURREGION;
    bb.fEnable = true;
    // クライアント領域外の値を指定
    bb.hRgnBlur = ::CreateRectRgn(-1,-1,0,0);
    //Enable Blur Behind
    hr = DwmEnableBlurBehindWindow(hwnd, &bb);

結果の動画は下。背景はアルファ値がゼロなので透明になっている。

問題はマウスイベントだ。この方法だと透明部分であってもマウスイベントが発生する。レイヤードウィンドウの場合透明の部分はマウスイベントは発生しないようになっている。