2

GUI には、気に入ったカラフルなプログレス バーがありました。

オリジナル

ただし、Windows 7 で GUI を Windows 7 スタイルにしたかったので、このプラグマを追加しました。

#pragma comment( linker, "/manifestdependency:\"type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' \
language='*'\"")

しかし、これにより、私が好きではないモノクロ (緑) のアニメーション化された光るツールバーが作成されました。

輝く

そこで、次のように入力してスタイルを削除しました。

  SetWindowTheme(hProgress, L" ", L" ");

悪くない結果:

ボーダレス

ただし、同じリソース ファイルに依存していますが、プログレス バーの周りに境界線がないことに注意してください。ウィンドウの残りの部分で Windows 7 の外観を維持しながら、プログレス バーを元の外観に設定するにはどうすればよいですか?

4

3 に答える 3

3

Visual Styles が有効な場合、標準の Win32 ProgressBar はカスタム カラーリングをサポートせず、代わりに現在のテーマからカラーリングを取得します。これが、ProgressBars がすべて緑色になった理由です。ただし、このメッセージを使用してPBM_SETSTATE、ProgressBar の状態をPBST_NORMAL(緑)、PBST_ERROR(赤)、またはPBST_PAUSED(黄) に設定できます。

さらに、カスタム カラーでテーマ化された ProgressBar を表示するには、必要に応じてクラスのさまざまなコンポーネントDrawThemeBackground()を描画し、直接使用してカスタム コントロールを所有者描画する必要があります。標準の赤、緑、シアン、および黄色の色は、部分を描画するときにパラメーターを、、、または(それぞれ) に設定することで描画できます(現在の進行状況を示す色付きのバー)。ただし、他の色が必要な場合は、少しトリッキーになります. 次の記事は、グラデーション カラー ブレンドを使用して標準テーマの ProgressBar を描画する例を示しています。"PROGRESS"iStateIdPBFS_ERRORPBFS_NORMALPBFS_PARTIALPBFS_PAUSEDPP_FILL

グラデーション バー コントロール

デモの手法では、最初に (緑) 状態を使用して標準の ProgressBar を描画し、次に HSL 彩度と強度変換を使用してピクセルPBFS_NORMALの色値を変更し、目的の色にします。PP_FILL

于 2014-06-19T23:21:11.250 に答える