Mfc中cformview里如何切换dialog,并切换后把前一个dialog删除,并跟随view一起动
时间: 2024-03-22 11:42:24 浏览: 173
在MFC中,可以使用CPropertySheet和CPropertyPage来实现在CFormView中切换对话框。具体步骤如下:
1. 在CFormView中添加一个CPropertySheet成员变量,并在OnInitDialog函数中创建它。
2. 在CPropertySheet中添加需要切换的CPropertyPage对话框。
3. 在需要切换对话框的地方,通过CPropertySheet的SetActivePage函数设置当前活动的CPropertyPage。
4. 在需要删除前一个对话框的地方,通过CPropertySheet的RemovePage函数移除前一个CPropertyPage。
5. 在需要跟随view一起动的地方,通过CPropertySheet的MoveWindow函数将CPropertySheet移动到CFormView的适当位置。
示例代码如下:
```
// 在CFormView中添加一个CPropertySheet成员变量
CPropertySheet m_PropertySheet;
// 在OnInitDialog函数中创建CPropertySheet和CPropertyPage
BOOL CMyFormView::OnInitDialog()
{
CFormView::OnInitDialog();
// 创建CPropertySheet
m_PropertySheet.Create(this, WS_CHILD | WS_VISIBLE, 0);
// 创建CPropertyPage并添加到CPropertySheet中
CMyPropertyPage1 page1;
CMyPropertyPage2 page2;
m_PropertySheet.AddPage(&page1);
m_PropertySheet.AddPage(&page2);
return TRUE;
}
// 切换对话框
void CMyFormView::OnButtonSwitchDialog()
{
// 设置当前活动的CPropertyPage
m_PropertySheet.SetActivePage(1);
// 移除前一个CPropertyPage
m_PropertySheet.RemovePage(0);
// 将CPropertySheet移动到CFormView的适当位置
CRect rect;
GetClientRect(&rect);
m_PropertySheet.MoveWindow(rect);
}
```
阅读全文