对于一个应用程序,对话框之间的跳转需要一个类似容器的窗口
新建一个对话框(标注为empty对话框),在里面不加任何东西,调好大小,因为它就是你的应用程序的窗口大小
这时建好所有你要跳转的对话框,通常有个主界面对话框(标注为main对话框),我们要做的就是把main放入到那个empty中,其中有一步很重要,把main的属性(border改为thin或none,style改为child)
接下来讲讲如何把main放入empty
CEmptyDlg --emptydlg.h
#include "maindlg.h"
#include "setupdlg.h" //(setup和main一样是一个对话框)
//初始参数
public:
CDialog *m_pPages[14];//定义的14,就是说能够存放的最多对话框,根据需求改变
UINT m_IDD[14]; //每个对话框对应的IDD_XXX
int m_nNumOfPage; //标示数组下标
CRect showRect; //画布
CMainDlg *d_main;//0
CSetupDlg *d_setup;//1
//函数
public:
BOOL AddPage(CDialog* pDialog,UINT ID);//添加进空对话框
void ShowPage(int CurrentPage); //把你所需要显示的对话框显示出来
?CEmptyDlg --emptydlg.cpp
m_nNumOfPage=0;
d_main = new CMainDlg(this);//this即empty对话框的窗口指针,就是说新建一个子对象指针
d_setup = new CSetupDlg (this);
BOOL CEmptyDlg::AddPage(CDialog* pDialog,UINT ID)
{
m_pPages[m_nNumOfPage]=pDialog;
m_IDD[m_nNumOfPage]=ID;
m_pPages[m_nNumOfPage]->Create(ID,this);
m_pPages[m_nNumOfPage]->MoveWindow(&showRect);
m_nNumOfPage++;
return true;
}
void CEmptyDlg::ShowPage(int CurrentPage)
{
for(int nCount=0;nCount<m_nNumOfPage;nCount++)
{
if(nCount==CurrentPage)
{
m_pPages[nCount]->ShowWindow(SW_SHOW);
continue;
}
m_pPages[nCount]->ShowWindow(SW_HIDE);
}
}
BOOL CEmptyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//。。。。。。
showRect.SetRect(-5,-5,800,600);
this->AddPage(d_main,IDD_DEK265_MAIN);
this->AddPage(d_setup,IDD_DEK265_SETUP);
this->ShowPage(0);//把main对话框显示出来
}
这时页面都添加进了,怎么跳转是你的事了,比如我要从main跳到setup
main对话框 按钮函数
void CMainDlg::ClickBtnMaint()
{
// TODO: 在此处添加消息处理程序代码
CEmptyDlg *pMMD = (CEmptyDlg*)AfxGetMainWnd();
pMMD->ShowPage(1);//跳到setup对话框
}