back,next and cancel

Posted on 2001-06-22
Last Modified: 2013-11-20
       I am trying to create a program that takes steps. How can I, when the user clicks the "Next >" button it opens another dialog and closes the one just used? And
when the user clicks the "Back >" button it opens previous dialog and closes the one just used? And cancel
would close all dialogs?
Question by:uma99
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
LVL 49

Expert Comment

ID: 6220325
What you want is called a "Wizard."  MFC supports this a a special case of what is called a CPropertySheet.  Real all about it:

In particular, you will need to call SetWizardMode() before calling DoModal();

-- Dan


Accepted Solution

Shielsy earned 50 total points
ID: 6220526
Create a base class (CWizardBaseDlg) for your dialogs (each page in wizard), which has a extra function called getButtonPressed(). This lets me know after the user has closed the dialog the next step to be taken. See then code below. Hope this helps.
     CWizardBaseDlg *paDlgs[3];

     paDlgs[0] =  new CWizard1Dlg();
     paDlgs[1] =  new CWizard2Dlg();
     paDlgs[2] =  new CWizard3Dlg();

     int iIndex = 0;
     int iRet = 0;

     while (true)

          iRet = paDlgs[iIndex]->getButtonPressed();
          if (iRet == CWizardBaseDlg::WIZ_BUTTON_CANCEL)

          else if (iRet == CWizardBaseDlg::WIZ_BUTTON_BACK)
          else if (iRet == CWizardBaseDlg::WIZ_BUTTON_OK)
               if (iIndex > 2)
     delete paDlgs[0];
     delete paDlgs[1];
     delete paDlgs[2];


Author Comment

ID: 6225136
Hi Shielsey
I looked at you answer it is fine if i am using just  3 or 4 dialogs but my apllication has 10 dialogs. You can view my apllication to be somewhat similar to those dialogs when ur installing an application.First of it has a splash screen then it asks the user to select options and later it stores the opetions in a drive an d somethinglike  that.'
Thank you if can suggest a remedy for this case.
but anyway i will try to use the one proposed by you.i am not sure of using base calss .so i will try to  use it thank you.
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

LVL 49

Expert Comment

ID: 6225352
You should use a Wizard-style PropertySheet.  It is designed to do *exactly* what you want to do.  Did you read my post?  Do you need additional details?

-- Dan

Author Comment

ID: 6225518
can youplease give me those aditonal details  . iam a new bie i do n ot know anything about property sheet and also i wnat to ask how to close all dialogs when you clickk on X
thaank you
LVL 49

Expert Comment

ID: 6226595
It really is quite simple.  Please read:

which explains it in detail and provides examples.  It boils down to...

CDlgPgWelcome pgWelcome; // a dlg box, but derived from CPropertyPage
CDlgPgStep1   pgStep1;  // also
CDlgPgStep2   pgStep2;  // also

CPropertySheet cSheet("ABC Install Wizard");

cSheet.AddPage( &pgWelcome );
cSheet.AddPage( &pgStep1 );
cSheet.AddPage( &pgStep2 );

int nRet= cSheet.DoModal();
if (nRet== IDOK ) {
   the user did not cancel from the wizard

This is a 50-point question that has already been locked, so I expect you to do a bit of research on your own.

-- Dan

Author Comment

ID: 6299102
Thank you Dan and Shielsy
LVL 49

Expert Comment

ID: 6307042
The pleasure is all mine.  I guess.

-- Dan

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This is to be the first in a series of articles demonstrating the development of a complete windows based application using the MFC classes.  I’ll try to keep each article focused on one (or a couple) of the tasks that one may meet.   Introductio…
Introduction: Load and Save to file, Document-View interaction inside the SDI. Continuing from the second article about sudoku.   Open the project in visual studio. From the class view select CSudokuDoc and double click to open the header …
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
In this video we outline the Physical Segments view of NetCrunch network monitor. By following this brief how-to video, you will be able to learn how NetCrunch visualizes your network, how granular is the information collected, as well as where to f…

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question