difference between modal and modeless dialogs in MFC

30.2k views Asked by At

Can you please help me gain a comprehensive knowledge about differences between modal and modeless dialogs by introducing me excellent tutorial links?
For example can you explain me about the programs that are linked here? Are they modal and modeless ones?
Up to know I thought that designing a dialog using just codes means modeless but designing a dialog using Toolbox means modal but as much as I search, I get more confused. Can you help me understand more?

4

There are 4 answers

0
Edward Clements On

Modal dialog boxes are created by invoking the DoModal member function of your CDialog derived class in MFC or using the DialogBox API function.

Modeless dialog boxes are created by invoking the Create() (or CreateIndirect) member function of your CDialog derived class in MFC or using the CreateDialog API function.

The above links also explain what else you need to do to support the modal and modeless dialog boxes, for MFC, this MSDN link has some more information.

1
Jabberwocky On

The difference between modal and modeless dialogs is not limited to MFC.

When a modal dialog is open you cannot interact with anything else than this modal dialog inside your program, as long as the modal dialog is open. Most dialogs are modal, for example the File-Save As dialogs are modal.

On the other hand a modeless dialog behaves just like a normal window, you can do anything you want while it is open. The spell checker dialog in Microsoft Word is an example of such a dialog.

The link you mentiond in your question has nothing to do with modal and modeless dialogs.

Modal dialogs are trivial in MFC.

Modeless dialogs are a bit more complicated, but you can find plenty of tutorials by searching "mfc modeless dialog tutorial" on google.

0
abdul On

Model DialogBox: 1. Model dialog box we can communicate single window (that is )owner window .Incase we can open child window(sub window) until we are close that window at that time we are communication on parent window Ex: save, save as 2.Creation of model DialogBox to call domodel( ) 3.closeing time you are call end dialog.this DialogBox is not delete just hide 4.In model DialogBox there there one child message loop

Modelless DialogBox: 1.when we can open a window (owner window)at a same time we can communicate child window also. Ex.In notepad find ,word ,

2.model DialogBox creation is to call Create window() And ShowWindow() 3.if you want close that window call destroy window Here window is destroyed 4.Here massages Handel parent window

0
Sriram On

Modal Dialog Box:

  • After opening the modal dialog box, we can not access the parent window EX: Save as, OpenDialog Box.
  • Modal dialog box by invoking Cdialog constructor, and DoModel method of CDialog and created in stack.
  • Modal dialog box closed by calling EndDialog() function, it hides the dialog box.
  • It suspends parent window message loop, and start its own message loop.

Modeless Dialog Box:

  • After opening the modeless dialog box, we can access the parent window.
  • Modeless created by calling

    CDialog::Create(......);
    CDialog::Show Window(.....)
    

    method. And created in Heap.

  • Modeless dialog box closed by destroying the window, by calling Destroy Window().
  • It doesn't have its own message loop, it depends on parent window message loop. Parent window forwards the message to child window.