読者です 読者をやめる 読者になる 読者になる

S.F. Page

Programming,Music,etc...

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

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

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

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