可以使用 对话框编辑器将控件添加到对话框 ,也可以使用代码自行添加控件。
若要自行创建控件对象,通常会在C++对话框或框架窗口对象中嵌入C++控件对象。 与框架中的其他许多对象一样,控件需要两个阶段构造。 应在创建父对话框或框架窗口时调用控件的 Create 成员函数。 对于对话框,这通常在 OnInitDialog 中完成,对于框架窗口,在 OnCreate 中完成。
下面的示例演示如何在派生对话类的类声明中声明对象CEdit
,然后在其中Create
调用OnInitDialog
成员函数。 由于对象 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,以显示您已设置焦点。 如果返回非零值,对话管理器会将焦点设置为对话项列表中的第一个控件项。 在大多数情况下,需要使用对话框编辑器将控件添加到对话框。