本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSVC] MFC でのモードレスダイアログの作り方

文書番号: 403848

最終更新日: 1999/03/19


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP403848

概要

この資料は MFC を用いたモードレスダイアログボックスの作成方法について
の一つの方法を紹介したものです。

詳細

MFC でモードレスダイアログを作成する方法は幾つかありますが、ここでは
その内の1つを説明します。

<手順>

  1. AppStudio でダイアログを作成します。その後、 ClassWizard を起動して、 CDialog クラスを派生元とする自分のクラスを作成します(ここでは CMyDialog という名前にしたとします)。
  2. mydialog.cpp を開き、コンストラクタの部分に Create() を追加します。
             CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)
                 : CDialog(CMyDialog::IDD,pParent)
             {
                 //{{AFX_DATA_INIT(CMyDialog)
                     // 注意: .......
                 //}}AFX_DATA_INIT
         Create(CMyDialog::IDD,pParent); // <= この行を追加する
             }
    
  3. OnOK(), OnCancel() をオーバーライドし、その中で DestroyWindow() を 呼び出します。
            void CMyDialog::OnOK()
            {
                DestroyWindow();
            }
            void CMyDialog::OnCancel()
            {
                DestroyWindow();
            }
    
  4. PostNcDestroy() をオーバーライドし、その中に delete this を記述します。
            void CMyDialog::PostNcDestroy()
            {
                delete this;
            }
    
これでダイアログ側の用意はできました。実際に使用する場合はこのダイアログ クラスのオブジェクトのポインタを親となるクラスのメンバ変数として用意し、
ダイアログを表示する時点で new で作成します。
        class CMyFrame : public CFrameWnd {
            public:
                CMyDialog* myDlg;
              :
        };
        void CMyFrame::DispMyDialog() // <= ダイアログを表示する関数
        {
            myDlg = new CMyDialog(this); // <= ダイアログの生成・表示
        }
ダイアログ表示中にメインのウィンドウが終了しても、問題なくダイアログも
終了されます。

詳細

  • Visual C++ は、米国 Microsoft Corporation の商標です。

Keywords: KBHOWTO VC10 VC15 VC20 モーダレス KB403848
Technology: kbAudDeveloper kbvc150 kbVC32bitSearch kbVCsearch

inserted by FC2 system