0

MSDN トピック: DWM Blur Behind Overviewに記載されている正確な問題に遭遇しました。

DwmEnableBlurBehindWindow が呼び出された後、クライアント領域は美しいガラスになりましたが、残念ながら、 MSDN のトピックのように、コントロール (BUTTONs、EDITs、STATIC など) のすべての黒いテキストも透明になりました。

これを修正する方法はありますか?

ちなみに私の開発環境は VC++ 6.0 で、DrawThemeTextEx API で光るテキストを描画しなければならないので、単純に DwmExtendFrameIntoClientArea を使うことができません。クライアント領域のガラス効果を有効にするには、DwmEnableBlurBehindWindow を使用する必要があります。

どうもありがとう!

2012/6/19 更新: "SetLayeredWindowAttributes" でウィンドウの TRANSPARENT KEY COLOR を黒以外の色に変更し、"DwmExtendFrameIntoClientArea" を使用すると、ガラス ウィンドウのコントロール (ボタン、編集など) のキャプション テキストの問題を解決できます。 .

しかし、この方法では「DrawThemeTextEx」は正しく動作しませんでした。DrawThemeTextEx は RGB(0,0,0) のみを TRANSPARENT KEY COLOR として使用できたようです。

では、「DrawThemeTextEx」内で使用される TRANSPARENT KEY COLOR を変更できる API はありますか?

私の最終的な目標は、「DwmEnableBlurBehindWindow」の副作用なしにガラス (Aero) ウィンドウに光るテキストを描画することです。 /aa969537.aspx. そして、それを行う別の方法があれば、聞いてとてもうれしいです:)

そして、どうもありがとうございました。:)

4

1 に答える 1

0

MSDNのキャプション タイトルの描画をご覧ください。

例の行を見つけますHBITMAP hbmOld = (HBITMAP)SelectObject(hdcPaint, hbm);

その後、次の行を追加します。

// You should have set RGB(200,201,202) as the transparency key
FillRect(hdcPaint,&rcClient,CreateSolidBrush(RGB(200,201,202)));

効果は完璧ではないようですが、問題は解決します。

参照: SetLayeredWindowAttributes と BitBlt の間の C++ WinAPI 競合

于 2015-10-04T11:30:26.107 に答える