Visual C++ 6.0 Windowベースのアプリケーションからモードレスダイアログを開く方法 @ダイアログのリソースを作成する。「ダイアログプロパティ」の「その他のスタイル」で、「可視」にチェックを入れる。 Aダイアログのクラスを新規作成しておく。 Bダイアログのクラスで、CWndポインタ型のprivateのメンバ変数を作成する。 CWnd* m_pParent; Cダイアログのコンストラクタで、引数のオーナーウィンドウのポインタをCWndのポインタ型メンバ変数に格納する処理を追加する。 m_pParent = pParent; Dダイアログのクラスで、引数無しのCreate関数を作成する。その中で、親ウィンドウのポインタを書き換える。 public: virtual BOOL Create(); //仮想関数のオーバーライドを生成 BOOL CDataDlg::Create() { return CDialog::Create(CDataDlg::IDD, m_pParent); } Eダイアログのクラスで、PostNcDestroy関数をオーバーライドし、deleteの処理を追加する。 void CDataDlg::PostNcDestroy() { delete this; CDialog::PostNcDestroy(); } FCViewクラスで、ダイアログクラスポインタ型のprivateのメンバ変数を作成する。 GCViewクラスで、Create関数をオーバーライドする。その中で、ダイアログを構築し、ダイアログのCreate関数を呼び出す処理を追加する。 m_pDataDlg = new CDataDlg(); m_pDataDlg->Create(); ※CViewクラスはCMainFrameクラスでも可能