wxDialog Class Reference
[Common Dialogs]

#include <wx/dialog.h>

Inheritance diagram for wxDialog:

wxTopLevelWindow wxWindow wxEvtHandler wxObject wxColourDialog wxDirDialog wxFileDialog wxFindReplaceDialog wxFontDialog wxMessageDialog wxMultiChoiceDialog wxPageSetupDialog wxPrintDialog wxProgressDialog wxPropertySheetDialog wxRichTextStyleOrganiserDialog wxSingleChoiceDialog wxSymbolPickerDialog wxTextEntryDialog wxWizard

List of all members.


Detailed Description

A dialog box is a window with a title bar and sometimes a system menu, which can be moved around the screen. It can contain controls and other windows and is often used to allow the user to make some choice or to answer a question.

Dialogs can be made scrollable, automatically, for computers with low resolution screens: please see Automatic scrolling dialogs for further details.

Dialogs usually contains either a single button allowing to close the dialog or two buttons, one accepting the changes and the other one discarding them (such button, if present, is automatically activated if the user presses the "Esc" key). By default, buttons with the standard wxID_OK and wxID_CANCEL identifiers behave as expected. Starting with wxWidgets 2.7 it is also possible to use a button with a different identifier instead, see SetAffirmativeId() and SetEscapeId().

Also notice that the CreateButtonSizer() should be used to create the buttons appropriate for the current platform and positioned correctly (including their order which is platform-dependent).

Modal and Modeless

There are two kinds of dialog, modal and modeless. A modal dialog blocks program flow and user input on other windows until it is dismissed, whereas a modeless dialog behaves more like a frame in that program flow continues, and input in other windows is still possible. To show a modal dialog you should use the ShowModal() method while to show a dialog modelessly you simply use Show(), just as with frames.

Note that the modal dialog is one of the very few examples of wxWindow-derived objects which may be created on the stack and not on the heap. In other words, while most windows would be created like this:

    void AskUser()
    {
        MyAskDialog *dlg = new MyAskDialog(...);
        if ( dlg->ShowModal() == wxID_OK )
            // ...
        //else: dialog was cancelled or some another button pressed

        dlg->Destroy();
    }

You can achieve the same result with dialogs by using simpler code:

    void AskUser()
    {
        MyAskDialog dlg(...);
        if ( dlg.ShowModal() == wxID_OK )
            // ...

        // no need to call Destroy() here
    }

An application can define a wxCloseEvent handler for the dialog to respond to system close events.

Styles:

Under Unix or Linux, MWM (the Motif Window Manager) or other window managers recognizing the MHM hints should be running for any of these styles to have an effect.

Library:  wxCore

Category:  Common Dialogs

See also:
wxDialog Overview, wxFrame, wxValidator Overview

Public Member Functions

 wxDialog ()
 wxDialog (wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_DIALOG_STYLE, const wxString &name="dialogBox")
 ~wxDialog ()
void AddMainButtonId (wxWindowID id)
bool CanDoLayoutAdapation ()
void Centre (int direction=wxBOTH)
bool Create (wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_DIALOG_STYLE, const wxString &name="dialogBox")
wxSizerCreateButtonSizer (long flags)
wxSizerCreateSeparatedButtonSizer (long flags)
wxStdDialogButtonSizerCreateStdDialogButtonSizer (long flags)
bool DoLayoutAdapation ()
virtual bool DoOK ()
void EndModal (int retCode)
int GetAffirmativeId () const
wxWindowGetContentWindow () const
int GetEscapeId () const
bool GetLayoutAdaptationDone () const
int GetLayoutAdaptationLevel ()
wxDialogLayoutAdaptationMode GetLayoutAdaptationMode () const
wxArrayInt GetMainButtonIds ()
int GetReturnCode ()
wxToolBarGetToolBar () const
void Iconize (bool iconize)
bool IsIconized () const
bool IsMainButton (wxWindowID &id) const
bool IsModal () const
void OnSysColourChanged (wxSysColourChangedEvent &event)
void SetAffirmativeId (int id)
void SetEscapeId (int id)
void SetIcon (const wxIcon &icon)
void SetIcons (const wxIconBundle &icons)
void SetLayoutAdaptationDone (bool done)
void SetLayoutAdaptationLevel (int level)
void SetLayoutAdaptationMode (wxDialogLayoutAdaptationMode mode)
void SetModal (bool flag)
void SetReturnCode (int retCode)
bool Show (bool show)
int ShowModal ()

Static Public Member Functions

static void EnableLayoutAdaptation (bool enable)
static wxDialogLayoutAdapterGetLayoutAdapter ()
static bool IsLayoutAdaptationEnabled ()
static wxDialogLayoutAdapterSetLayoutAdapter (wxDialogLayoutAdapter *adapter)

Constructor & Destructor Documentation

wxDialog::wxDialog (  ) 

Default constructor.

wxDialog::wxDialog ( wxWindow parent,
wxWindowID  id,
const wxString title,
const wxPoint pos = wxDefaultPosition,
const wxSize size = wxDefaultSize,
long  style = wxDEFAULT_DIALOG_STYLE,
const wxString name = "dialogBox" 
)

Constructor.

Parameters:
parent Can be NULL, a frame or another dialog box.
id An identifier for the dialog. A value of -1 is taken to mean a default.
title The title of the dialog.
pos The dialog position. The value wxDefaultPosition indicates a default position, chosen by either the windowing system or wxWidgets, depending on platform.
size The dialog size. The value wxDefaultSize indicates a default size, chosen by either the windowing system or wxWidgets, depending on platform.
style The window style.
name Used to associate a name with the window, allowing the application user to set Motif resource values for individual dialog boxes.
See also:
Create()

wxDialog::~wxDialog (  ) 

Destructor. Deletes any child windows before deleting the physical window.


Member Function Documentation

void wxDialog::AddMainButtonId ( wxWindowID  id  ) 

Adds an identifier to be regarded as a main button for the non-scrolling area of a dialog.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

bool wxDialog::CanDoLayoutAdapation (  ) 

Returns true if this dialog can and should perform layout adaptation using DoLayoutAdaptation(), usually if the dialog is too large to fit on the display.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

void wxDialog::Centre ( int  direction = wxBOTH  ) 

Centres the dialog box on the display.

Parameters:
direction May be wxHORIZONTAL, wxVERTICAL or wxBOTH.

Reimplemented from wxWindow.

bool wxDialog::Create ( wxWindow parent,
wxWindowID  id,
const wxString title,
const wxPoint pos = wxDefaultPosition,
const wxSize size = wxDefaultSize,
long  style = wxDEFAULT_DIALOG_STYLE,
const wxString name = "dialogBox" 
)

Used for two-step dialog box construction.

See also:
wxDialog()

Reimplemented in wxPropertySheetDialog.

wxSizer* wxDialog::CreateButtonSizer ( long  flags  ) 

Creates a sizer with standard buttons. flags is a bit list of the following flags: wxOK, wxCANCEL, wxYES, wxNO, wxAPPLY, wxCLOSE, wxHELP, wxNO_DEFAULT.

The sizer lays out the buttons in a manner appropriate to the platform.

This function uses CreateStdDialogButtonSizer() internally for most platforms but doesn't create the sizer at all for the platforms with hardware buttons (such as smartphones) for which it sets up the hardware buttons appropriately and returns NULL, so don't forget to test that the return value is valid before using it.

wxSizer* wxDialog::CreateSeparatedButtonSizer ( long  flags  ) 

Creates a sizer with standard buttons using CreateButtonSizer() separated from the rest of the dialog contents by a horizontal wxStaticLine.

Note:
Just like CreateButtonSizer(), this function may return NULL if no buttons were created.

wxStdDialogButtonSizer* wxDialog::CreateStdDialogButtonSizer ( long  flags  ) 

Creates a wxStdDialogButtonSizer with standard buttons. flags is a bit list of the following flags: wxOK, wxCANCEL, wxYES, wxNO, wxAPPLY, wxCLOSE, wxHELP, wxNO_DEFAULT.

The sizer lays out the buttons in a manner appropriate to the platform.

bool wxDialog::DoLayoutAdapation (  ) 

Performs layout adaptation, usually if the dialog is too large to fit on the display.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

virtual bool wxDialog::DoOK (  )  [virtual]

This function is called when the titlebar OK button is pressed (PocketPC only). A command event for the identifier returned by GetAffirmativeId() is sent by default. You can override this function. If the function returns false, wxWidgets will call Close() for the dialog.

static void wxDialog::EnableLayoutAdaptation ( bool  enable  )  [static]

A static function enabling or disabling layout adaptation for all dialogs.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

void wxDialog::EndModal ( int  retCode  ) 

Ends a modal dialog, passing a value to be returned from the ShowModal() invocation.

Parameters:
retCode The value that should be returned by ShowModal.
See also:
ShowModal(), GetReturnCode(), SetReturnCode()

int wxDialog::GetAffirmativeId (  )  const

Gets the identifier of the button which works like standard OK button in this dialog.

See also:
SetAffirmativeId()

wxWindow* wxDialog::GetContentWindow (  )  const

Override this to return a window containing the main content of the dialog. This is particularly useful when the dialog implements pages, such as wxPropertySheetDialog, and allows the layout adaptation code to know that only the pages need to be made scrollable.

int wxDialog::GetEscapeId (  )  const

Gets the identifier of the button to map presses of ESC button to.

See also:
SetEscapeId()

bool wxDialog::GetLayoutAdaptationDone (  )  const

Returns true if the dialog has been adapted, usually by making it scrollable to work with a small display.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

int wxDialog::GetLayoutAdaptationLevel (  ) 

Gets a value representing the aggressiveness of search for buttons and sizers to be in the non-scrolling part of a layout-adapted dialog. Zero switches off adaptation, and 3 allows search for standard buttons anywhere in the dialog.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

wxDialogLayoutAdaptationMode wxDialog::GetLayoutAdaptationMode (  )  const

Gets the adaptation mode, overriding the global adaptation flag.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

static wxDialogLayoutAdapter* wxDialog::GetLayoutAdapter (  )  [static]

A static function getting the current layout adapter object.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

wxArrayInt wxDialog::GetMainButtonIds (  ) 

Returns an array of identifiers to be regarded as the main buttons for the non-scrolling area of a dialog.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

int wxDialog::GetReturnCode (  ) 

Gets the return code for this window.

Remarks:
A return code is normally associated with a modal dialog, where ShowModal() returns a code to the application.
See also:
SetReturnCode(), ShowModal(), EndModal()

wxToolBar* wxDialog::GetToolBar (  )  const

On PocketPC, a dialog is automatically provided with an empty toolbar. This function allows you to access the toolbar and add tools to it. Removing tools and adding arbitrary controls are not currently supported.

This function is not available on any other platform.

void wxDialog::Iconize ( bool  iconize  ) 

Iconizes or restores the dialog. Windows only.

Parameters:
iconize If true, iconizes the dialog box; if false, shows and restores it.
Remarks:
Note that in Windows, iconization has no effect since dialog boxes cannot be iconized. However, applications may need to explicitly restore dialog boxes under Motif which have user-iconizable frames, and under Windows calling Iconize(false) will bring the window to the front, as does Show(true).

Reimplemented from wxTopLevelWindow.

bool wxDialog::IsIconized (  )  const

Returns true if the dialog box is iconized. Windows only.

Remarks:
Always returns false under Windows since dialogs cannot be iconized.

Reimplemented from wxTopLevelWindow.

static bool wxDialog::IsLayoutAdaptationEnabled (  )  [static]

A static function returning true if layout adaptation is enabled for all dialogs.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

bool wxDialog::IsMainButton ( wxWindowID &  id  )  const

Returns true if id is in the array of identifiers to be regarded as the main buttons for the non-scrolling area of a dialog.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

bool wxDialog::IsModal (  )  const

Returns true if the dialog box is modal, false otherwise.

void wxDialog::OnSysColourChanged ( wxSysColourChangedEvent event  ) 

The default handler for wxEVT_SYS_COLOUR_CHANGED.

Parameters:
event The colour change event.
Remarks:
Changes the dialog's colour to conform to the current settings (Windows only). Add an event table entry for your dialog class if you wish the behaviour to be different (such as keeping a user-defined background colour). If you do override this function, call wxEvent::Skip() to propagate the notification to child windows and controls.
See also:
wxSysColourChangedEvent

void wxDialog::SetAffirmativeId ( int  id  ) 

Sets the identifier to be used as OK button. When the button with this identifier is pressed, the dialog calls wxWindow::Validate() and wxWindow::TransferDataFromWindow() and, if they both return true, closes the dialog with wxID_OK return code.

Also, when the user presses a hardware OK button on the devices having one or the special OK button in the PocketPC title bar, an event with this id is generated.

By default, the affirmative id is wxID_OK.

See also:
GetAffirmativeId(), SetEscapeId()

void wxDialog::SetEscapeId ( int  id  ) 

Sets the identifier of the button which should work like the standard "Cancel" button in this dialog. When the button with this id is clicked, the dialog is closed. Also, when the user presses ESC key in the dialog or closes the dialog using the close button in the title bar, this is mapped to the click of the button with the specified id.

By default, the escape id is the special value wxID_ANY meaning that wxID_CANCEL button is used if it's present in the dialog and otherwise the button with GetAffirmativeId() is used. Another special value for id is wxID_NONE meaning that ESC presses should be ignored. If any other value is given, it is interpreted as the id of the button to map the escape key to.

void wxDialog::SetIcon ( const wxIcon icon  ) 

Sets the icon for this dialog.

Parameters:
icon The icon to associate with this dialog.
See also:
wxIcon

Reimplemented from wxTopLevelWindow.

void wxDialog::SetIcons ( const wxIconBundle icons  ) 

Sets the icons for this dialog.

Parameters:
icons The icons to associate with this dialog.
See also:
wxIconBundle

Reimplemented from wxTopLevelWindow.

void wxDialog::SetLayoutAdaptationDone ( bool  done  ) 

Marks the dialog as having been adapted, usually by making it scrollable to work with a small display.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

void wxDialog::SetLayoutAdaptationLevel ( int  level  ) 

Sets the aggressiveness of search for buttons and sizers to be in the non-scrolling part of a layout-adapted dialog. Zero switches off adaptation, and 3 allows search for standard buttons anywhere in the dialog.

See also:
Automatic scrolling dialogs (for more on layout adaptation)

void wxDialog::SetLayoutAdaptationMode ( wxDialogLayoutAdaptationMode  mode  ) 

Sets the adaptation mode, overriding the global adaptation flag.

See also:
wxDialogLayoutAdaptationMode, Automatic scrolling dialogs (for more on layout adaptation)

static wxDialogLayoutAdapter* wxDialog::SetLayoutAdapter ( wxDialogLayoutAdapter adapter  )  [static]

A static function for setting the current layout adapter object, returning the old adapter. If you call this, you should delete the old adapter object.

See also:
wxDialogLayoutAdapter, Automatic scrolling dialogs

void wxDialog::SetModal ( bool  flag  ) 

Deprecated:
This function doesn't work for all ports, just use ShowModal() to show a modal dialog instead.
Allows the programmer to specify whether the dialog box is modal (Show() blocks control until the dialog is hidden) or modeless (control returns immediately).

Parameters:
flag If true, the dialog will be modal, otherwise it will be modeless.

void wxDialog::SetReturnCode ( int  retCode  ) 

Sets the return code for this window.

A return code is normally associated with a modal dialog, where ShowModal() returns a code to the application. The function EndModal() calls SetReturnCode().

Parameters:
retCode The integer return code, usually a control identifier.
See also:
GetReturnCode(), ShowModal(), EndModal()

bool wxDialog::Show ( bool  show  )  [virtual]

Hides or shows the dialog. The preferred way of dismissing a modal dialog is to use EndModal().

Parameters:
show If true, the dialog box is shown and brought to the front, otherwise the box is hidden. If false and the dialog is modal, control is returned to the calling program.

Reimplemented from wxWindow.

int wxDialog::ShowModal (  ) 

Shows a modal dialog.

Program flow does not return until the dialog has been dismissed with EndModal().

Notice that it is possible to call ShowModal() for a dialog which had been previously shown with Show(), this allows to make an existing modeless dialog modal. However ShowModal() can't be called twice without intervening EndModal() calls.

Returns:
The value set with SetReturnCode().
See also:
EndModal(), GetReturnCode(), SetReturnCode()

Reimplemented in wxMultiChoiceDialog, wxSingleChoiceDialog, wxColourDialog, wxDirDialog, wxFileDialog, wxFontDialog, wxMessageDialog, wxPrintDialog, wxPageSetupDialog, and wxTextEntryDialog.



wxWidgets logo

[ top ]