OnNcPaintについて – プログラミング – Home

通知
すべてクリア

[解決済] OnNcPaintについて


茶々
 茶々
(@茶々)
ゲスト
結合: 19年前
投稿: 10
Topic starter  

お世話になります。
Win XP Pro, VC6, MFC(app)で開発をしています。

今作成しているアプリケーションで、
エディットボックスの枠線をOnNcPaint()で
描画しているのですが、入力フォーカスの有無によって
枠線色を変えたいため、任意のタイミングで
OnNcPaint()を呼び出したいと考えています。

でも、OnNcPaint()はOnPaint()と同じく明示的に
呼んではいけないらしいのですが、OnPaint()と違い、
RedrawWindow()などでは呼ばれてきません。

どうすれば任意のタイミングでOnNcPaint()を呼ぶことが
できるのでしょうか。
ご存知の方、どうぞご享受ください。
よろしくお願い致します。


引用未解決
トピックタグ
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

>どうすれば任意のタイミングでOnNcPaint()を呼ぶことが
>できるのでしょうか。

SetWindowPosメソッドのSWP_DRAWFRAMEフラグで呼ばれたように思います。


返信引用
rin
 rin
(@rin)
ゲスト
結合: 18年前
投稿: 112
 

描画用の関数を別につくり、
OnNcPaint()から、その関数を呼ぶようにするのはどうでしょうか
任意のタイミングで描画させたいときは、
OnNcPaint()に関係なく、描画用につくった関数を呼べばいい。


返信引用
oops
 oops
(@oops)
ゲスト
結合: 17年前
投稿: 28
 

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vclib/html/_mfc_CWnd.3a3a.RedrawWindow.asp

第3引数に RDW_FRAME を指定しても無駄ですか?


返信引用
なら
 なら
(@なら)
ゲスト
結合: 17年前
投稿: 1
 

ああ


返信引用
茶々
 茶々
(@茶々)
ゲスト
結合: 19年前
投稿: 10
Topic starter  

皆様、回答ありがとうございました。
返信が遅れて申し訳ありません。

SetWindowPos(&CWnd::wndTop, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER
| SWP_DRAWFRAME);

および

RedrawWindow(NULL, NULL, RDW_FRAME | RDW_INVALIDATE);

のどちらでもOnNcPaint()が呼ばれることを確認いたしました。
(・・・ただ描画のされ方が違うっす)

ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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