子对话框(子窗体)






4.58/5 (9投票s)
1999年11月18日

148507

3756
一个用于处理对话框或属性表中的子对话框的简单类。
引言
一个用于处理对话框或属性表中的子对话框的简单类。这些子对话框可以动态地更改,就像子窗体一样。实际上,这很简单,但我厌倦了每次都重新编程所有内容 :-(
步骤 1. 设计一个或多个“子对话框”。确保将样式设置为 Child
(子窗口)并勾选“Control”(控件)属性。
步骤 2. 设计一个父对话框。为了方便起见,我添加一个静态控件以便更容易地定位子对话框(通常我使用组框)。
步骤 3. 为所有对话框生成它们的类。
步骤 4. 将文件 SubFormCollection.cpp 和 SubFormCollection.h 添加到您的项目中。
步骤 5. 在父对话框中创建一个 CSubFormCollection
类的对象。
// CSubFormCollection m_SubForms; //
步骤 6. 在父类的 OnInitDialog()
方法中,添加以下代码
// CRect r; // get the position for the subforms (GetDlgItem(IDC_SUBFORM_FRAME))->GetWindowRect(&r); // if the positioning is absolute use this, else the next line // m_SubForms.SetRelPos(r); // centers the subdialog within the static IDC_SUBFORM_FRAME m_SubForms.SetCenterPos(r); m_SubForms.CreateSubForm(IDD_SUBFORM1,this); // create the sub forms m_SubForms.CreateSubForm(IDD_SUBFORM2,this); m_SubForms.CreateSubForm(IDD_SUBFORM3,this); m_SubForms.CreateSubForm(IDD_SUBFORM4,this); m_SubForms.ShowSubForm(); // show the first one //
步骤 7. 要在子对话框之间切换,请使用以下代码
// m_SubForms.ShowSubForm(index_of_subform); //
现在开始繁重的工作了...