2つ先のダイアログからViewに再描画をかけるには – プログラミング – Home

2つ先のダイアログからViewに再描画...
 
通知
すべてクリア

[解決済] 2つ先のダイアログからViewに再描画をかけるには


モーモー
 モーモー
(@モーモー)
ゲスト
結合: 23年前
投稿: 49
Topic starter  

いつもお世話になっています。
また行き詰まってしまったので、みなさんの知恵を貸してください。

こんな感じで、
メインのメニューバーから、ダイアログ1を呼びます。
ダイアログ1からさらにダイアログ2をよびます。
ダイアログ2で、OKボタンを押されると、メインのウィンドウを再描画させたいのですが
どうしたらよいのでしょうか?
ふつうにInvalidate()をしても、dlg1の最描画をしている(?)ようで、ダイアログ1を
消すまでOnDrawが走りません。

| ̄ ̄ ̄ ̄ ̄ ̄ ̄|    | ̄ ̄ ̄ ̄|    | ̄ ̄ ̄ ̄|
|  メイン  |==> |dlg1|==> |dlg2|
|       |    |  ok |    |  ok |
|       |    |____|    |____|
|_______|<===============∥再描画

なにかいい方法はないでしょうか。教えてください。
よろしくお願いします。


引用未解決
トピックタグ
NEG(ねぐ)
 NEG(ねぐ)
(@NEG(ねぐ))
ゲスト
結合: 23年前
投稿: 178
 

 CDocument::UpdateAllViewsが使えるかな?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

> CDocument::UpdateAllViewsが使えるかな?

...どぉでしょう。

Modal-dialogがイベントループを捕まえて離さないってこっちゃないかしら。
# UpdateWindow だとどうかな。自信ナシ。


返信引用
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 24年前
投稿: 217
 

単純に AfxGetMainWnd()->Invalidate() とかでいいような気もします。
(ビューのポインタが簡単に得られるなら、そいつに対して Invalidate すればいいですが)

# dlg1 や dlg2 のメンバ関数内に Invalidate(); とだけ書いたのなら、
# メインウィンドウが再描画されないのはあたりまえなわけで。


返信引用
モーモー
 モーモー
(@モーモー)
ゲスト
結合: 23年前
投稿: 49
Topic starter  

いろいろな意見ありがとうございました。

kazumaさんの方法で、再描画することができました!

しかし、メモリリーク(?)しているのでしょうか。
ときどき、再描画しても絵が消えてしまいます。
再起動して、起動しなおすと動作事態はうまくいってたので、
この質問に関しては終わりにします(^^;

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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