2つのモードレスダイアログを順番に表示したい – プログラミング – Home

2つのモードレスダイアログを順番に表示...
 
通知
すべてクリア

[解決済] 2つのモードレスダイアログを順番に表示したい


mycalling
 mycalling
(@mycalling)
ゲスト
結合: 20年前
投稿: 2
Topic starter  

実現したい内容は以下のとおりです。
あるメニューを選択したらモードレスダイアログAが表示され、ダイアログA上の閉じる
ボタンが押されたらダイアログAが閉じて、モードレスダイアログBが表示されるように
したいのですが、今は2つとも表示されていまいます。
ソースは以下のとおりです、よろしくお願いします。

void Menu1()
{
CDlgA *pdlg = new CDlgA();
pdlg->Create(CDlgA::IDD);

CDlgB *pdlg2 = new CDlgB();
pdlg2->Create(CDlgB::IDD);
}


引用未解決
トピックタグ
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

モードレスダイアログは、リソース側に可視の指定がある場合、Createしたらすぐに
表示されます。しかもモードダルと違って閉じるまでCreateから帰ってこないということは
ありません。作成が出来たらすぐに戻ってきます。
ですから、今のプログラムでは二つとも表示されて当然なのです。

モードレスにする必要がどうしてあるのかが良くわかりませんが、
モードレスダイアログに言われているような事がしたいのであれば、
Menu1では、ダイアログAだけをCreateするようにして
ダイアログAが終わる時にメインウインドウに自分が終了する事を伝えて
メインウインドウはその通知を受けてダイアログBを出すようにしないと
無理ではないかと思います。

ところで、ここでnewしたダイアログのインスタンスはきちんとdeleteされていますか?
deleteしていないとメモリリークしそうですけれど。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

(T-T)誤字がー。

誤)
表示されます。しかもモードダルと違って閉じるまでCreateから帰ってこないということは

正)
表示されます。しかもモーダルと違って閉じるまでCreateから帰ってこないということは

誤)
モードレスダイアログに言われているような事がしたいのであれば、

正)
モードレスダイアログで言われているような事がしたいのであれば、


返信引用
KING・王
 KING・王
(@KING・王)
ゲスト
結合: 21年前
投稿: 122
 

> 今は2つとも表示されていまいます。

というか、提示されているコードは、そのような動作になるコードそのものなので、
当然の結果かと。

ダイアログAの閉じるボタンが押されたときに、親(メインフレームなど)にメッセージを投
げ、
メインフレーム側でそのメッセージを受けた場合に、ダイアログを開くようにしてはどうでしょ
うか?

#はずしていたらごめんなさい。
#pDlgAはnewされているけど、deleteってできているのだろうか?
#なんとなく、メモリリークしていきそうな気が。


返信引用
mycalling
 mycalling
(@mycalling)
ゲスト
結合: 20年前
投稿: 2
Topic starter  

さっそくのお返事ありがとうございました。
やはり呼ぶ側からなんらかの制御をしないと無理ですよね。
2つのダイアログは共通で他からも呼ばれると云う仕様だったのでうなされておりました
が、CDlgAの中でCDlgBを呼ぶ仕様でかまわないということになったのでその方法を取らせ
ていただきました。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

ちょっと気になったので一言。

> CDlgAの中でCDlgBを呼ぶ仕様でかまわないということになったので

この方法の場合、CDlgBのインスタンスは何処で持つのでしょう?
CDlgAの中で持つという事になるとCDlgBが不要になるまで呼び出し元のCDlgAの
インスタンスも存続している必要があると思いますけれど。
モードレスダイアログのインスタンスがウインドウが破棄されるときに自殺する構造なら
良いと思いますけれど、そうでない場合は注意が必要です。

Webで紹介されているモードレスダイアログは自殺クラスになっている事が多いようなので
多分、大丈夫なんでしょうけれども。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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