手动添加控件

可以使用对话框编辑器将控件添加到对话框中,也可以使用代码自行添加控件。

若要自行创建控件对象,通常需要将 C++ 控件对象嵌入到 C++ 对话框或框架窗口对象中。 与框架中的许多其他对象一样,控件需要两阶段构造。 应在创建父对话框或框架窗口的过程中调用控件的 Create 成员函数。 对于对话框,这通常在 OnInitDialog 中完成,对于框架窗口,通常在 OnCreate 中完成。

以下示例演示如何在派生对话框类的类声明中声明 CEdit 对象,然后在 OnInitDialog 中调用 Create 成员函数。 由于 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 成员函数将输入焦点设置为控件。 最后,从 OnInitDialog 返回 0 以表明你设置了焦点。 如果返回非零值,则对话框管理器会将焦点设置为对话框项列表中的第一个控件项。 在大多数情况下,需要使用对话框编辑器向对话框中添加控件。

另请参阅

创建和使用控件
控件
CDialog::OnInitDialog