私は、LISTBOX
特別な機能を追加するために、Windows コモン コントロールのスーパー クラス バージョンを作成中です。
標準コントロールはWM_CTLCOLORLISTBOX
メッセージをその親に送信し、テキストと背景色の両方を実行時に適切なメッセージ ハンドラー内で指定できるようにします。ただしWM_CTLCOLORLISTBOX
、コントロール自体には送信されないため、カプセル化して内部で処理することはできません。
私が対処しようとしているシナリオは、コントロールの有効/無効状態に応じて背景とテキストの色を変更することです。状態に関係なく、リストボックスの背景を同じ色合いのままにするという標準的な動作は、私には見苦しく、一貫性がないように見えます。カプセル化内でこれらの値を設定し、他のすべての描画タスクを基本クラスのウィンドウ プロシージャに渡す別の方法はありますか?
を使うのが気になりSetClassLongPtr()
ました。ただし、これはテキストの色に対処しないだけでなく、正しく理解すれば、現在存在するそのクラスのすべてのコントロールの背景を変更し、状態が変更された特定のコントロールは変更しません。