CStaticの背景がおかしい

[戻る]
KK 2009/09/03(木) 14:48:30
VS2008 VC++で ATL/WTL使っています

IEのツールバーを作っていてツールバーのWM_CTLCOLORSTATICを下のように処理して
CStaticの背景を消しています

    LRESULT OnCtlColorStatic(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
    {
        SetBkMode((HDC)wParam,TRANSPARENT);
        return ((LRESULT)GetStockObject(NULL_BRUSH));
    }

が、このようにするとCStaticの背景は透明になってるっぽいのですが、たとえばIEの上
にFireFoxを開いていて、IEのウィンドウをアクティブにすると、CStaticの背景の部分に
そこにそれまで表示されていたFireFoxの画面が写りこみます。

どのように解決したらいいのでしょうか。
よろしくお願いします。

仲澤@失業者 2009/09/03(木) 15:20:28
提示された方法で背景が透明になると思っている人が多いのですが、
厳密に言うと、その方法では常に安定して透明の状態にはできません。
TextOutで、文字を書いた方がはるかにましです。

古いスレッドには追加発言できません。