基于Cformview的初始化时就建立dialog,程序运行当中可以通过什么方法替换成其他dialog
时间: 2024-03-23 17:37:24 浏览: 106
如果你想在程序运行时动态地替换基于 CFormView 的对话框,可以按照以下步骤进行操作:
1. 在你的 CFormView 派生类中添加一个成员变量,用于保存当前使用的对话框指针:
```
CDialog* m_pCurrentDialog;
```
2. 在你的 CFormView 派生类的构造函数中,初始化 m_pCurrentDialog 指针,例如:
```
m_pCurrentDialog = new CMyDialog1(this);
```
其中,CMyDialog1 是你想要初始化的对话框类名。
3. 在你的 CFormView 派生类的析构函数中,释放 m_pCurrentDialog 指针,例如:
```
delete m_pCurrentDialog;
```
4. 在你的 CFormView 派生类中添加一个函数,用于切换当前的对话框,例如:
```
void CMyFormView::SwitchDialog(CDialog* pNewDialog)
{
if (m_pCurrentDialog != NULL)
{
m_pCurrentDialog->DestroyWindow();
delete m_pCurrentDialog;
}
m_pCurrentDialog = pNewDialog;
m_pCurrentDialog->Create(m_pCurrentDialog->GetDlgID(), this);
m_pCurrentDialog->ShowWindow(SW_SHOW);
}
```
其中,pNewDialog 是你想要切换的新对话框指针。
5. 在你想要切换对话框的地方,调用 SwitchDialog 函数,例如:
```
CMyDialog2* pNewDialog = new CMyDialog2(this);
SwitchDialog(pNewDialog);
```
其中,CMyDialog2 是你想要切换的新对话框类名。
完成以上步骤后,你就可以在程序运行时动态地替换基于 CFormView 的对话框了。当需要切换对话框时,只需要创建一个新的对话框指针并调用 SwitchDialog 函数即可。注意,在切换对话框时,需要先销毁当前的对话框并释放其内存,然后再创建并显示新的对话框。
阅读全文