• 締切済み

複数のModelessDialogの終了

メインダイアログと複数のモードレスダイアログがあるアプリがあります。 そのうちの一つのモードレスダイアログに終了ボタンがあり、ボタンが押されるとメインダイアログにSendMessageにて通知して、メインダイアログからモードレスダイアログをDestroyWindowにて終了させ、各モードレスダイアログの変数にNULLをセットするのですが、その後終了ボタン処理に戻ってしまい、Access Violationとなってしまいます。 普通こういう構成のアプリケーションの場合、どういった手段を用いるのが妥当でしょうか。 例えばSendMessageではなくPostMessageを使う等…。 「自分ならこうする」でも結構ですので教えて頂ければと思います。 環境:Windows7+VC9

みんなの回答

  • davidfox
  • ベストアンサー率58% (21/36)
回答No.1

>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(); }

関連するQ&A