ダイアログベースで画面を作っているのですが、
エディットボックスだけフォントを大きくして、色を付けたいと思っています。
エディットボックスの仕組みは複雑で、DC が表示用と入力用2つ存在しているようで、入力用の領域の(フォントや色の)変更方法がよくわからないでいます。
よろしくお願いします。
WM_CTLCOLOREDITに対する応答で処理できます。
MFCならOnCtlColorかな。
WM_CTLCOLOREDIT(OnCtlColor) はいつ飛んでくるのですか?
ちなみに OCX 化しているのですが、OCX上でも捕まえられるのでしょうか?
MSDN引くなりして調べるくらいのことはしてください。
http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/editcontrols/editcontrolreference/editcontrolmessages/wm_ctlcoloredit.asp
の最初に,
> An edit control that is not read-only or disabled sends the WM_CTLCOLOREDIT message to its parent window when the control is about to be drawn.
と書いてあります。
OCXでも利用しているのがEDITであれば関係ないです。
一応目は通したんですが、すみませんね〜英語が苦手な物で(^^;
いろいろ調べた結果 WM_CTLCOLOREDIT(またはWM_CTLCOLORSTATIC) は子(エディットボックス)が
描画されるとき親に飛ばすメッセージのようで、親ウィンドウ(ダイアログ)の DefWindowProc() で
処理するのがふつうのようです。
と言うことは、OCX 側の DefWindowProc()で待っていても何も飛んでこないはずでした。
OCXで処理しようとすると、キーが押された瞬間入力フィールドが白地の黒文字になってしまいます。
OnKeyDown()で領域を塗りつぶしてもNGです。この辺は今後の課題ということで、
どうもありがとうございました。
ツイート | ![]() |