手動でコントロールを追加する方法

更新 : 2007 年 11 月

ダイアログ ボックスにコントロールを追加する方法には、ダイアログ エディタを使用する方法と、コードから直接追加する方法があります。

通常、コントロール オブジェクトを直接作成するには、C++ コントロール オブジェクトを C++ ダイアログまたはフレーム ウィンドウ オブジェクトに埋め込みます。フレームワーク内のほかの多くのオブジェクトと同様に、コントロールは 2 段階で構築します。まず、親ダイアログ ボックスまたはフレーム ウィンドウを作成するときに、コントロールの Create メンバ関数を呼び出します。ダイアログ ボックスの場合は、OnInitDialog で呼び出し、フレーム ウィンドウの場合は OnCreate で呼び出します。

次の例では、派生ダイアログ クラスのクラス宣言で CEdit オブジェクトを宣言し、OnInitDialogCreate メンバ関数を呼び出す方法を示します。CEdit オブジェクトは埋め込みオブジェクトとして宣言されるので、ダイアログ オブジェクトの構築時に自動的に構築されますが、独自の Create メンバ関数で初期化する必要があります。

class CCustomDialog : public CDialog
{
   CEdit m_edit;
   virtual BOOL OnInitDialog();
};

次の OnInitDialog 関数は、四角形を設定してから、Create を呼び出して Windows エディット コントロールを作成し、初期化されていない CEdit オブジェクトにアタッチしています。

BOOL CCustomDialog::OnInitDialog()
{
    CDialog::OnInitDialog();
    CRect rect(85, 110, 180, 210);

    m_edit.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |
             ES_AUTOHSCROLL | WS_BORDER, rect, this, IDC_EXTRA_EDIT);
    m_edit.SetFocus();
    return FALSE;
}

エディット オブジェクトを作成したら、SetFocus メンバ関数を呼び出して入力フォーカスをコントロールに設定することもできます。最後に、フォーカスの設定が完了したことを示す 0 を OnInitDialog から返します。0 以外の値を返した場合、ダイアログ マネージャはダイアログ項目リストの最初のコントロール項目にフォーカスを設定します。ほとんどの場合、ダイアログ ボックスにコントロールを追加するには、ダイアログ エディタを使用します。

参照

概念

コントロール (MFC)

参照

コントロールの作成方法と使い方

CDialog::OnInitDialog