手动添加控件
可以使用对话框编辑器将控件添加到对话框中,也可以使用代码自行添加控件。
若要自行创建控件对象,通常需要将 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 以表明你设置了焦点。 如果返回非零值,则对话框管理器会将焦点设置为对话框项列表中的第一个控件项。 在大多数情况下,需要使用对话框编辑器向对话框中添加控件。