2012-03-22 8 views
4

「透明ガラスを有効にする」や「Aero Peekを有効にする」のような特定のWindowsビジュアルエフェクトをプログラムで無効/有効にするAPIがある場合は、システム/高度なシステム環境設定/高度(タブ)/パフォーマンスの設定/カスタムWindows Aero - プログラムでビジュアルエフェクトを無効にする

私はWindows用のアクセシビリティ・ツールを作成していますし、私はいくつかの視覚効果を無効にする必要があります:私はを参照しています

効果がで構成されたものであり、視力障害のあるユーザーにとっては「見えない」ためです。また、画面の倍率や色の調整にいくつかのCPUサイクルを節約する必要があります。

おかげ

答えて

4

特定のアプリケーションがDwmEnableComposition()を使用して実行している間は、それを無効にすることができます。

これをグローバルに変更することは、ウィンドウの内部で行い、実際にユーザーが行う必要があります。

+0

AFIAK、DwmEnableComposition()は、Aeroを完全に無効にしますか?私はデスクトップの構成が必要です、または倍率APIが動作しません.... – mpm

2

BitBltingの透明なPNGや他の画像の場合、エアロのテーマが問題になります。 Aeroテーマでは、CBitmapの代わりにAlphaBlendとCPngImageを使用し、BLENDFUNCTION :: SourceConstantAlphaの透明度を0〜255のBLENDFUNCTION構造体に設定すると、透明度が低下します。私は透明な背景を持っているか、単に半透明(不透明度0-255)として退色したいときにこの方法を使用します。 Aeroテーマがすべて透明になっているとき。だから、私はDwmEnableComposition(DWM_EC_DISABLECOMPOSITION)を使ってエアロテーマの透明度を無効にします。

HRESULT hr = S_OK; 
hr = DwmEnableComposition(DWM_EC_DISABLECOMPOSITION); 
if (SUCCEEDED(hr)){ 
    // Aero theme effect is off! No more swept away transparency 
} 

これをOnInitDialog()または以前のウィンドウインスタンス関数に呼び出すだけです。それはトリックです

関連する問題