モードレスダイアログの消去 – プログラミング – Home

モードレスダイアログの消去
 
通知
すべてクリア

モードレスダイアログの消去


ぷっくん
 ぷっくん
(@ぷっくん)
ゲスト
結合: 23年前
投稿: 1
Topic starter  

モードレスダイアログを消去できません。
以下、処理内容を説明します。

(1)メインフレームのメニューを選択すると↓メソッドが呼ばれます。
void CDialogTestView::OnShowModoless()
{
GetDocument()->ShowModoressTestDialog();
}

(2)↑メソッドに↓メソッドがよばれ、ダイアログが表示されます。
void CDialogTestDoc::ShowModoressTestDialog(void)
{
m_pDlg = new CModolessTestDialog();
m_pDlg->Create(CModolessTestDialog::IDD, NULL);
m_pDlg->ShowWindow(SW_SHOW);
}

(3)ダイアログのキャンセルボタンをクリックすると↓メソッドがよばれます。
DestroyWindowを呼んでいるので、ダイアログが消去されるはずですが、表示されたままです。
void CModolessTestDialog::OnCancel()
{
DestroyWindow();
}

(4)↑メソッド内のDestroyWindowを呼ぶ事で、↓のメソッドが呼ばれるはずですが
よばれません。ブレークポイントをdelete thisの行に置きましたが、来ませんでした。
void CModolessTestDialog::PostNcDestroy()
{
delete this;
CDialog::PostNcDestroy();
}

ダイアログ消去するメッセージが届いてないのでしょうか?
良い解決方法を教えてください。
お願いします。


引用解決済
トピックタグ
真夜中のまたんご
 真夜中のまたんご
(@真夜中のまたんご)
ゲスト
結合: 23年前
投稿: 1
 

今手元に資料がないので確かなことは言えませんが、このモーダレスダイアログはメイ
ンフレームで作成されているので呼び出せないのでは? OnCancel関数内でデフォルト
のままCModolessTestDialog::OnCancel()で渡してはいけないのでしょうか? m_pDlgの
初期化や後処理も必要となると思いますが。かなり昔にハマった記憶があります。

また、メインフレーム終了時には当然OnDestroy関数を呼ぶことになるので、その分岐も
必要となります。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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