1

WM_CTLCOLOR... メッセージに応答して、特定のコントロールに背景色を適用する C++ Win32 コードがいくつかあります。

これは、Windows UX テーマが動作していない場合に正常に機能します。

デフォルト テーマの Windows 7 では、CBS_DROPDOWNLIST スタイルのコンボボックスはテーマの灰色の背景で表示されます。CBS_DROPDOWN コンボボックスは、テーマが有効になっている背景色の変更に正しく応答します。

影響を受けるコントロールのテーマを削除できることはわかっていますが、これにより外観が奇妙になります。

MSがWM_CTLCOLOR ...のものを壊したように見えるので、個々のテーマコントロールの背景色を変更する公式の方法を誰もが知っています。

ありがとうございます

4

2 に答える 2

1

NM_CUSTOMDRAW通知で目的を達成できるかどうかを確認できます。それらは親に送信されます (WM_CTLCOLOR... メッセージなど)。一部のコントロールは、これらの通知で他のコントロールよりもうまく機能します。期待するすべての通知を常に受け​​取るとは限りません。

もう 1 つのオプションは、コントロールをサブクラス化し、WM_PAINT をオーバーライドすることです。それは大変な作業になりますが、実行可能です。テーマを使用したペイントに関するドキュメントがあります。

于 2012-04-05T16:46:49.890 に答える
0

テーマコントロールの色を変更する場合は、テーマAPIを使用してカスタム描画する必要があります。これは、本質的に文書化されていないかなりトリッキーなタスクです。幸運を!

于 2012-04-05T15:42:26.147 に答える