关闭

MFC实现多个界面跳转

标签: 对话框MFC界面
731人阅读 评论(0) 收藏 举报
分类:

对于一个应用程序,对话框之间的跳转需要一个类似容器的窗口
新建一个对话框(标注为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
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21034次
    • 积分:572
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:19篇
    • 译文:0篇
    • 评论:0条
    文章分类