The V C++ GUI Framework:vModalDialog

From EDM2
Jump to: navigation, search

Used to show modal dialogs.


Class name:
(vBaseWindow,vCmdParent) ->vDialog ->vModalDialog


This class is an implementation of a modal dialog. This means that the dialog grabs control, and waits for the user to select an appropriate command from the dialog. You can use any of the methods defined by the vDialog class, as well as the new ShowModalDialog method.


vModalDialog(vBaseWindow* parent, char* title)

vModalDialog(vApp* parent, char* title)

There are two versions of the constructor, one for constructing dialogs from windows, the other from the vApp object. See the description of the vDialog constructor for more details.

The default value for the title is an empty string, so you can declare instances of modal dialogs without the title string if you wish. The dialog title will always show in Windows, but in X is dependent on how the window manager treats decorations on transient windows.

New Methods

virtual ItemVal ShowModalDialog(char* message, ItemVal& retval)

This method displays the dialog, and does not return until the modal dialog is closed. It returns the id of the button that caused the return, and in retval, the value of the button causing the return as defined in the dialog declaration.

Please see the description of DialogDisplayed for an important discussion of setting dialog control values.

There are a couple of ways to close a modal dialog and make ShowModalDialog return, all controlled by the DialogCommand method. The default DialogCommand will close the modal dialog automatically when the user clicks the M_Cancel, M_Done, or M_OK buttons.

All command actions are still passed to the virtual DialogCommand method, which is usually overridden in the derived class. By first calling vModalDialog::DialogCommand to handle the default operation, and then checking for the other buttons that should close the dialog, you can also close the dialog by calling the CloseDialog method, which will cause the return.

The following code demonstrates this.

    void myModal::DialogCommand(ItemVal id, ItemVal val,
        CmdType ctype)
        // Call the parent for default processing
        if (id == M_Yes || id == M_No) // These close, too.

Derived Methods

virtual void DialogCommand(ItemVal Id, ItemVal val, CmdType type)

Adds a little functionality for handling this modally.

Inherited Methods

vDialog(vBaseWindow* parent)

vDialog(vBaseWindow* parent, int modalflag)

vDialog(vApp* parent)

vDialog(vApp* parent, int modalflag)

void vDialog::AddDialogCmds(CommandObject* cList)

virtual void CancelDialog()

virtual void CloseDialog()

virtual int GetTextIn(ItemVal Id, char* str, int maxlen)

virtual int GetValue(ItemVal Id)

virtual void SetValue(ItemVal Id, ItemVal val, ItemSetType type)

virtual void SetString(ItemVal Id, char* str)

virtual void ShowDialog(char* message)

See Also