お世話になっております。
いまコントロールをある一定の条件下で編集を不可にしています。
GetDlgItem(IDC_XXXX)->EnableWindow(FALSE);
そこで、ボタンなどは別に問題はないのですが
エディットボックスを編集不可にした場合、文字の色がグレイになってしまって
見にくいと言われてしまいました。
そこでスタティックテキストをくぼませた様な文字色(黒)にしたいと思うのですが
何か良い方法はございますでしょうか?
よろしくお願い致します。
OnCtlColorを使うと背景色や文字色を設定できます。
編集不可ではなく、
CEdit::SetReadOnly()で読取専用にする方法はどうでしょう?
ありがとうございました~!
>>sugarさん
CEdit::SetReadOnly()で思っていたことを実現することが出来ました。
CEdit* pComboEdit = (CEdit*)GetDlgItem(IDC_xxx);
pComboEdit->SetReadOnly( true);
>>YuOさん
当初の考えに近いのがOnCtlColorでした。
ですが実現できるかどうか試したところ編集ロックされたオブジェクトの
文字色変更はできませんでした。(グレイに反転したまま)
ちなみに背景色変更は編集ロックしたままでも可能でした。
ところで背景色変更をして気になったのですが
エディットボックスの背景色を変更すると
下と右の部分が少しだけ(1ミリぐらい)変更されません・・・
※背景色変更に使用した関数はSetBkColorです。
pDC->SetBkColor(RGB(0,255,0)); //背景を緑色に変更
一応解決ですが、こちらの方もご存知の方がいましたらアドバイス願います!
う・・
もう1つ教えてください。
CEdit* pComboEdit = (CEdit*)GetDlgItem(IDC_J_KAISI);
pComboEdit->SetReadOnly( true);
これを1行で実現させたいと思い。
(CEdit*)GetDlgItem(IDC_J_KAISI)->SetReadOnly( true);
としてみたところSetReadOnlyはCwndのメンバーではありませんという
エラーが出てしまいました・・・
キャストに関する知識があやふやなので変なことを聞いているかもしれませんが
何が間違っているのでしょうか?
大変初歩的な質問なのかもしれませんがよろしくお願い致します。
((CEdit*)GetDlgItem(IDC_J_KAISI))->SetReadOnly( true);
> ※背景色変更に使用した関数はSetBkColorです。
> pDC->SetBkColor(RGB(0,255,0)); //背景を緑色に変更
背景描画用のブラシを返せばよいです。
#return ::CreateSolidBrush(...);なんてことをやらないように。
> エディットボックスの背景色を変更すると
> 下と右の部分が少しだけ(1ミリぐらい)変更されません・・・
>
1ミリというのは1ピクセルと解釈します。
OSはWinXPより以前のものを使ってますか?
だとすれば、コントロールの縁を3Dに見せるための描画効果として
下と右にグレーが使われますので、この事だと推測されます。
同じグレーですが、背景色とは別のシステムパレットとして使い分けられています。