プログラミングメモ →目次

モーダレスダイアログの作成(VC++)

モーダレスダイアログの作成についてのメモです。

1.ダイアログの本体を作ります。普通のダイアログのリソースとクラスを、従来の手順で作成します。例えば、モーダレスダイアログのリソースIDIDD_DIALOG1として、クラス名をCDlgTestとします。

2.親ウィンドウズ側(呼び出し元)での処理。まず、new でダイアログのオブジェクトを作成します。次に、ダイアログのメンバー関数のCreate()を、CDlgTest::IDDの引数で呼び出します。最後、ShowWindow()で、ダイアログを表示させます。

例:メインフレームクラスからモーダレスダイアログを表示する。

void CMainFrame::OnDlg() 
{
    CDlgTest* pDlg = new CDlgTest();
    pDlg->Create(CDlgTest::IDD, this);
    pDlg->ShowWindow(SW_SHOW);
}
3.ダイアログのオブジェクトの廃棄。モーダレスダイアログをクローズした後に、ダイアログのオブジェクトの廃棄を行います。親のプログラムの何処かで、delete pDlg;文でオブジェクトを削除できますが、ダイアログのクラスのメンバー関数のPostNcDestroy()をオーバライドして、その中で、自ら自分自身を削除すれば便利です。

例:

void CDlgTest::PostNcDestroy() 
{
    CDialog::PostNcDestroy();
    delete this;
}