お世話になります。
Win XP Pro, VC6, MFC(app)で開発をしています。
今作成しているアプリケーションで、
エディットボックスの枠線をOnNcPaint()で
描画しているのですが、入力フォーカスの有無によって
枠線色を変えたいため、任意のタイミングで
OnNcPaint()を呼び出したいと考えています。
でも、OnNcPaint()はOnPaint()と同じく明示的に
呼んではいけないらしいのですが、OnPaint()と違い、
RedrawWindow()などでは呼ばれてきません。
どうすれば任意のタイミングでOnNcPaint()を呼ぶことが
できるのでしょうか。
ご存知の方、どうぞご享受ください。
よろしくお願い致します。
>どうすれば任意のタイミングでOnNcPaint()を呼ぶことが
>できるのでしょうか。
SetWindowPosメソッドのSWP_DRAWFRAMEフラグで呼ばれたように思います。
描画用の関数を別につくり、
OnNcPaint()から、その関数を呼ぶようにするのはどうでしょうか
任意のタイミングで描画させたいときは、
OnNcPaint()に関係なく、描画用につくった関数を呼べばいい。
第3引数に RDW_FRAME を指定しても無駄ですか?
ああ
皆様、回答ありがとうございました。
返信が遅れて申し訳ありません。
SetWindowPos(&CWnd::wndTop, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER
| SWP_DRAWFRAME);
および
RedrawWindow(NULL, NULL, RDW_FRAME | RDW_INVALIDATE);
のどちらでもOnNcPaint()が呼ばれることを確認いたしました。
(・・・ただ描画のされ方が違うっす)
ありがとうございました。