プロが教える店舗&オフィスのセキュリティ対策術

一つの画面をコントロール部と描画部にわけたものを作ろうとしています.
(VC++6.0 MFC使用)

・CMyViewクラス(CFormViewクラス派生・コントロール部)
・CTest1Viewクラス(CViewクラス派生・描画部)(CTest1Docに関連付け)
・CTest1Docクラス

MyViewのボタン入力でTest1Viewの画面を再描画させたいのですが,MyView内から以下のようにしてもTest1ViewのOnDrawが呼び出されません.
(OnUpdateは呼び出されるようです)
CTest1Doc *pDoc=(CTest1Doc *)GetDocument();
pDoc->UpdateAllViews(NULL, 1, NULL);

再描画させるにはどうすればよいのでしょうか.

A 回答 (4件)

No2は間違いなので無視してください。


CWnd::Invalidate
CWnd::UpdateWindow
をコールする。

いまいち何がしたいのかよくわかりませんが本来は
OnUpdateで画面を更新すれば自動的にOnDrawがコールされるので強制的に再描画する必要はないと思いますが。

この回答への補足

回答ありがとうございます.説明が下手ですいません…
ウインドウをCViewとCFormViewに分割して,CFormView側のボタンを押すとCView側に線を引く,というのをやりたいのです(まだ分かりづらいでしょうか,すいません)

InvalidateとUpdateWindowを呼び出してみたところ,無事再描画はされました.ありがとうございます.
OnUpdateで画面を更新するためには,このようにこちらから何か指定しなければいけないのでしょうか?

補足日時:2005/10/06 10:27
    • good
    • 0

OnUpdate関数内でCWnd::GetDCをコールしてCDCのインスタンスを取得する。


取得したCDCのインスタンスで線を描画する。
    • good
    • 0

CWnd::UpdateWindowをコールする。

    • good
    • 0

pDoc->UpdateAllViews(NULL, 1, NULL);



の前に

pDoc->SetModifiedFlag();

を入れてみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます.
試してみたのですが,どうもやっぱりOnDrawは呼び出されないようです.

他の方法も試してみようと思います.
ありがとうございました.

お礼日時:2005/10/06 10:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています