- 締切済み
複数のModelessDialogの終了
メインダイアログと複数のモードレスダイアログがあるアプリがあります。 そのうちの一つのモードレスダイアログに終了ボタンがあり、ボタンが押されるとメインダイアログにSendMessageにて通知して、メインダイアログからモードレスダイアログをDestroyWindowにて終了させ、各モードレスダイアログの変数にNULLをセットするのですが、その後終了ボタン処理に戻ってしまい、Access Violationとなってしまいます。 普通こういう構成のアプリケーションの場合、どういった手段を用いるのが妥当でしょうか。 例えばSendMessageではなくPostMessageを使う等…。 「自分ならこうする」でも結構ですので教えて頂ければと思います。 環境:Windows7+VC9
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- davidfox
- ベストアンサー率58% (21/36)
>Access Violationとなってしまいます。 フレームワークの有無で一概に言えないかも知れませんが、何かおかしい気がします。 複数じゃなければ問題無いのでしょうか... >「自分ならこうする」でも結構ですので教えて頂ければと思います。 付属サンプルを見るのが基本だと思います。 昔のVCに付いていたMFCモードレスサンプルは次のようになってます(抜粋)。 --- モードレス側 BOOL CAdderDialog::Create() { return CDialog::Create(m_nID, m_pParent); } void CAdderDialog::OnCancel() { ((CMainDlg*)m_pParent)->BoxDone(); DestroyWindow(); } void CAdderDialog::PostNcDestroy() { delete this; } --- メイン側 void CMainDlg::BoxDone() { m_pModeless = NULL; GetDlgItem(IDOK)->EnableWindow(); }