OnCtlColor()で選択色 – プログラミング – Home

通知
すべてクリア

OnCtlColor()で選択色


Z
 Z
(@Z)
ゲスト
結合: 22年前
投稿: 13
Topic starter  

VS2010とMFCで、OnCtlColor()でコントロールの色を変更しようと調べているのですが、
エディットボックスやリストボックスの選択色(標準で青背景+白文字)は、
変更することは可能なのでしょうか。

それとも、この部分の色を変えるだけで、
すべてオーナー描画になってしまうのでしょうか?


引用解決済
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

選択文字色(=COLOR_HIGHLIGHTTEXT)、選択背景色(=COLOR_HIGHLIGHT)は、
SetSysColors()で設定することができますが、
全てのウインドウに影響しますので、自身のウインドウのみ変更したい場合は、
描画後に元に戻す必要があります。また、

1.OnCtlColor()やSetTextColor()を駆使しても
 色の設定ができない部分が存在する。

2.そもそも色の設定ができない標準コントロールが存在する。

3.色覚異常者等への配慮(アクセシビリティ)が求められ、
 これはOSが標準で提供しているので、プログラマは、
 これを邪魔しないように配慮を求められている。

4.さらに、最近のOSはデスクトップの配色は、一貫したテーマに沿って
 色設定を行うのが一般的なので、標準コントロールの色は
 いじらないことが推奨されている。

など、この手の努力はまったく報われません。
実験的にやってみるのは大いにお勧めしますが、
製品に実装するのは慎むべかと考えます。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

×慎むべかと考えます。
○慎むべきかと考えます。orz.


返信引用
AR2
 AR2
(@ar2)
Estimable Member
結合: 5年前
投稿: 110
 

リストコントロールであれば、オーナードローではなく、カスタムドローを使えば、選択
状態やフォーカス状態のステータスによって色分けと言ったことも比較的容易に実装可能
です。
エディットボックスはやろうと思ったことが無いので分かりません。
エディタを作りたいといった場合には必要になりそうですが、その場合はオーナードロー
じゃないと、そもそも十分な性能が出せないと思います。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました