要求是这样,一个基于对话框的程序,四个对话框(假设编号分别为1,2,3,4),每个上面有三个按钮,“上一个”,“下一个”“退出”,要求每次只能显示一个对话框(启动时显示1号窗体,按“下一个”显示2号窗体,同时关闭1号窗体;2号窗体上按“上一个”显示1号窗体,同时关闭2号窗体,如果按“下一个”显示3号窗体,关闭2号窗体……;另外每个对话框的“退出”按钮都要能够退出应用程序)请给出事例,这个ONOK,ONCANCE,ONCLOSE,让我郁闷了很久,不知道到底时候时候用哪个了?请求帮助,最好能给出可运行的程序,[email protected]谢谢!

解决方案 »

  1.   

    Example
    CPropertySheet dlg;
    CPropertyPage page1, page2;dlg.AddPage(&page1);
    dlg.AddPage(&page2);
    dlg.SetWizardMode();
    dlg.DoModal();
      

  2.   

    在 App::InitInstance()里添加就是啦.
    而且程序自带范例
      

  3.   

    谢谢DentistryDoctor(雅克医生<改行做程序员了>) ,能不能不用PropertySheet的Wizard模式
    qinxiaogang(qinxg) 不懂你说的什么意思
      

  4.   

    用一个主对话框,在里面建立几个子对话框,你要的按钮都在主对话框里。启动的时候把几个子对话框全建立起来,但是只显示第一个,按下一步,就隐藏第一个,显示第二个。其他类似。我的安装程序就是这样做的。
    HWND m_hWndSubWindow[5];
    CreateSubDlg()
    {
    CRect rcTemplate;

    m_SubWindowRect.GetWindowRect(rcTemplate);//m_SubWindowRect这个是个picture控件或EDIT
    ScreenToClient(rcTemplate);

    m_Dlg1.Create(IDD_DLG1,this);
    m_Dlg1.MoveWindow(&rcTemplate);
    m_Dlg1.ShowWindow(SW_SHOW);
    m_hWndSubWindow[0] = m_Dlg1.GetSafeHwnd();

    m_Dlg2.Create(IDD_DLG2,this);
    m_Dlg2.MoveWindow(&rcTemplate);
    m_Dlg2.ShowWindow(SW_HIDE);
    m_hWndSubWindow[1] = m_Dlg2.GetSafeHwnd();

    }
    按下一步按钮时:
    m_nCurrentPage++;
    BOOL b =::AnimateWindow(
    m_hWndSubWindow[ m_nCurrentPage ],
    100,
    AW_SLIDE | AW_HOR_POSITIVE
    );//可选

    ::ShowWindow( m_hWndSubWindow[ m_nCurrentPage-1 ], SW_HIDE );
      

  5.   

    也可以啊,不过比较麻烦
    在主对话框OnInitDialog()中
    m_Dlg1.Create(IDD_DLG1,this);
    m_Dlg2.Create(IDD_DLG2,this);
    m_Dlg3.Create(IDD_DLG3,this);
    每次只显示一个对话框:ShowWindow(SW_SHOW),其他的隐藏就可以了:ShowWindow(SW_HIDE)至于退出可以向主对话框(pDlg)发送退出消息
    pDlg->PostMessage(WM_CLOSE);
      

  6.   

    把3个对话矿定义成主ap的成员
    然后在对话矿1的oncancle里面show第二个之后hide自己,依次类推