MFC实现多个界面跳转

对于一个应用程序,对话框之间的跳转需要一个类似容器的窗口

新建一个对话框(标注为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对话框

}

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值