=for comment based on iup-3.5 - http://www.tecgraf.puc-rio.br/iup/en/dlg/iupdialog.html

=head1 NAME

IUP::Dialog - [GUI element] the main GUI element; the main application window

=head1 DESCRIPTION

Creates a dialog element. It manages user interaction with the
interface elements. For any interface element to be shown, it must be
encapsulated in a dialog.

=begin HTML

<p><img src="http://kmx.github.io/perl-iup/img-3.9/dlg/iupdialog.gif"></p>

=end HTML

=head1 USAGE

=head2 CREATION - new() method

 $dialog = IUP::Dialog->new( TITLE=>"Windows title", $child=>$frame_element );

B<$child>: Identifier of an interface element. The dialog has only one child.

B<Returns:> the identifier of the created element, or C<undef> if an error occurs.

NOTE: You can pass to C<new()> other C<ATTRIBUTE=E<gt>'value'> or C<CALLBACKNAME=E<gt>\&func> pairs relevant
to this element - see L<IUP::Manual::02_Elements|IUP::Manual::02_Elements/"new()">.

=head2 ATTRIBUTES

For more info about concept of attributes (setting/getting values etc.)
see L<IUP::Manual::03_Attributes|IUP::Manual::03_Attributes>. Attributes specific to this element:

=head2 Common

=over

=item B<BACKGROUND>

I<(non inheritable)>

Dialog background color or image. Can be a non inheritable alternative to BGCOLOR or can be the name of an
image to be tiled on the background. See also the screenshots:

=begin HTML

<p>
  <table border="1">
    <tbody align="left">      
      <tr>
        <th></th>
        <th>normal background</th>
        <th>setting dialog BACKGROUND</th>
        <th>setting dialog BGCOLOR</th>
        <th>setting children BGCOLOR</th>
      </tr>
      <tr>
        <th>Motif</th>
        <td><img src="http://kmx.github.io/perl-iup/spec/bg_mot.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/spec/bg_mot_background.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/spec/bg_mot_bgcolor.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/spec/bg_mot_bgcolor_indiv.png"></td>
      </tr>
      <tr>
        <th>GTK</th>
        <td><img src="http://kmx.github.io/perl-iup/spec/bg_gtk.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/spec/bg_gtk_background.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/spec/bg_gtk_bgcolor.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/spec/bg_gtk_bgcolor_indiv.png"></td>
      </tr>
      <tr>
        <th>Windows<br>Classic</th>
	<td><img src="http://kmx.github.io/perl-iup/spec/bg_win2k.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/spec/bg_win2k_background.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/spec/bg_win2k_bgcolor.png"></td>
        <td><img src="http://kmx.github.io/perl-iup/spec/bg_win2k_bgcolor_indiv.png"></td>
      </tr>
      <tr>
        <th>Windows<br>w/ Styles</th>
	<td><img src="http://kmx.github.io/perl-iup/spec/bg_winxp.png"></td>
	<td><img src="http://kmx.github.io/perl-iup/spec/bg_winxp_background.png"></td>
	<td><img src="http://kmx.github.io/perl-iup/spec/bg_winxp_bgcolor.png"></td>
	<td><img src="http://kmx.github.io/perl-iup/spec/bg_winxp_bgcolor_indiv.png"></td>
      </tr>
      <tr>
        <th>Windows<br>Vista</th>
	<td><img src="http://kmx.github.io/perl-iup/spec/bg_vista.png"></td>
	<td><img src="http://kmx.github.io/perl-iup/spec/bg_vista_background.png"></td>
	<td><img src="http://kmx.github.io/perl-iup/spec/bg_vista_bgcolor.png"></td>
	<td><img src="http://kmx.github.io/perl-iup/spec/bg_vista_bgcolor_indiv.png"></td>
      </tr>
    </tbody>
  </table>
</p>


=end HTML

=item B<BORDER>

I<(non inheritable) (creation only)>

Shows a resize border
around the dialog. Default: "YES". BORDER=NO is useful only when
RESIZE=NO, MAXBOX=NO, MINBOX=NO, MENUBOX=NO and TITLE=undef, if any of
these are defined there will be always some border.

=item L<CURSOR|IUP::Manual::03_Attributes/CURSOR>

I<(non inheritable)>

Defines a cursor
for the dialog.

=item B<DRAGDROP>

I<[Windows and GTK Only] (non inheritable)>

Enable or disable
the drag&drop of files. Default: NO, but if DROPFILES_CB is defined
when the element is mapped then it will be automatically enabled.

=item L<EXPAND|IUP::Manual::03_Attributes/EXPAND>

I<(non inheritable)>

The default
value is "YES".

=item L<SIZE|IUP::Manual::03_Attributes/SIZE>

I<(non inheritable)>

Dialogs size.
Additionally the following values can also be defined for width and/or
height:

=over

=item "FULL": Defines the dialogs width (or height) equal to the
screen's width (or height)

=item "HALF": Defines the dialogs width (or height) equal to half the
screen's width (or height)

=item "THIRD": Defines the dialogs width (or height) equal to 1/3 the
screen's width (or height)

=item "QUARTER": Defines the dialogs width (or height) equal to 1/4
of the screen's width (or height)

=item "EIGHTH": Defines the dialogs width (or height) equal to 1/8 of
the screen's width (or height)

=back

The dialog B<Natural> size is only considered when the B<User> size is
not defined or when it is bigger than the B<Current> size. This
behavior is different from a control that goes inside the dialog.
Because of that, when SIZE or RASTERSIZE are set (changing the B<User>
size), the B<Current> size is internally reset to 0x0, so the the
=item B<Natural> size can be considered when re-computing the B<Current> size
of the dialog.

Values set at SIZE or RASTERSIZE attributes of a dialog are always
accepted, regardless of the minimum size required by its children. For
a dialog to have the minimum necessary size to fit all elements
contained in it, simply define SIZE or RASTERSIZE to C<undef>. Also if you
set SIZE or RASTERSIZE to be used as the initial size of the dialog,
its contents will be limited to this size as the minimum size, if you
do not want that, then after showing the dialog reset this size to C<undef>
so the dialog can be resized to smaller values. But notice that its
contents will still be limited by the B<Natural> size, to also remove
that limitation set SHRINK=YES.

For more information see L<IUP::Manual::05_DialogLayout>.

=item L<TITLE|IUP::Manual::03_Attributes/TITLE>

I<(non inheritable)>

Dialogs title.
Default: C<undef>. If you want to remove the title bar you must also set
MENUBOX=NO, MAXBOX=NO and MINBOX=NO, before map. But in Motif and GTK
it will hide it only if RESIZE=NO also.

=item L<VISIBLE|IUP::Manual::03_Attributes/VISIBLE>

Simply call L<Show|IUP::Manual::02_Elements/"Show()"> or L<Hide|IUP::Manual::02_Elements/"Hide()"> for the dialog.

=back

The following L<common attributes|IUP::Manual::03_Attributes/Common Attributes> are also accepted:

=over

=item * L<ACTIVE|IUP::Manual::03_Attributes/ACTIVE>,
L<BGCOLOR|IUP::Manual::03_Attributes/BGCOLOR>, L<FONT|IUP::Manual::03_Attributes/FONT>,
L<EXPAND|IUP::Manual::03_Attributes/EXPAND>,
L<SCREENPOSITION|IUP::Manual::03_Attributes/SCREENPOSITION>,
L<WID|IUP::Manual::03_Attributes/WID>, L<TIP|IUP::Manual::03_Attributes/TIP>,
L<CLIENTSIZE|IUP::Manual::03_Attributes/CLIENTSIZE>,
L<RASTERSIZE|IUP::Manual::03_Attributes/RASTERSIZE>,
L<ZORDER|IUP::Manual::03_Attributes/ZORDER>

Note that ACTIVE, BGCOLOR and FONT will also affect all the controls inside the dialog.

=back

=head2 Exclusive

=over

=item B<DEFAULTENTER>

Name of the button activated when the user press Enter when focus is in another control of the dialog.

To associate a name to element use L<SetName|/"SetName()"> or C<< name=>'ElemName' >> named parameter of L<new()|/"new()"> constructor.

=item B<DEFAULTESC>

Name of the button activated when the user press Esc when focus is in another control of the dialog.

To associate a name to element use L<SetName|/"SetName()"> or C<< name=>'ElemName' >> named parameter of L<new()|/"new()"> constructor.

=item B<DIALOGFRAME>

Set the common decorations for modal dialogs. This
means RESIZE=NO, MINBOX=NO and MAXBOX=NO. In Windows, if the
PARENTDIALOG is defined then the MENUBOX is also removed, but the Close
button remains.

=item L<ICON|IUP::Manual::03_Attributes/ICON>

Dialogs icon.

=item B<FULLSCREEN>

Makes the dialog occupy the whole screen over any system
bars in the main monitor. All dialog details, such as title bar,
borders, maximize button, etc, are removed. 

Possible values "YES", "NO".
In Motif you may have to click in the dialog to set its focus.

In Motif if set to YES when the dialog is hidden, then it can not be
changed after it is visible.

=item B<HWND>

I<[Windows Only] (non inheritable, read-only)> Returns the
Windows Window handle. Available in the Windows driver or in the GTK
driver in Windows.

=item B<MAXBOX>

I<(creation only)> Requires a maximize button from the window
manager. If RESIZE=NO then MAXBOX will be set to NO. Default: YES. In
Motif the decorations are controlled by the Window Manager and may not
be possible to be changed from IUP. In Windows MAXBOX is hidden only if
MINBOX is hidden as well, or else it will be just disabled.

=item B<MAXSIZE>

Maximum size for the dialog in raster units (pixels). The
windowing system will not be able to change the size beyond this limit.
Default: 65535x65535. 

=item B<MENU>

Name of a menu or L<IUP::Menu> reference. Associates a menu to the dialog as a menu bar.
The previous menu, if any, is unmapped.

=item B<MENUBOX>

I<(creation only)> Requires a system menu box from the window
manager. If hidden will also remove the Close button. Default: YES. In
Motif the decorations are controlled by the Window Manager and may not
be possible to be changed from IUP. In Windows if hidden will hide also
MAXBOX and MINBOX.

=item B<MINBOX>

I<(creation only)> Requires a minimize button from the window
manager. Default: YES. In Motif the decorations are controlled by the
Window Manager and may not be possible to be changed from IUP. In
Windows MINBOX is hidden only if MAXBOX is hidden as well, or else it
will be just disabled.

=item B<MINSIZE>

Minimum size for the dialog in raster units (pixels). The
windowing system will not be able to change the size beyond this limit.
Default: 1x1. Some systems define a very minimum size greatter than
this. Typically Windows has an horizontal minimum size that includes
the window decoration buttons. 

=item B<MODAL>

I<(read-only)> Returns the popup state. It is "YES" if the
dialog was shown using L<Popup|IUP::Manual::02_Elements/"Popup()">. It is "NO" if L<Show|IUP::Manual::02_Elements/"Show()"> was used
or it is not visible. 

=item B<NATIVEPARENT>

I<(creation only)> Native handle of a dialog to be used
as parent. Used only if PARENTDIALOG is not defined.

=item L<PARENTDIALOG|IUP::Manual::03_Attributes/PARENTDIALOG>

I<(creation only)> Name of a dialog to be used as parent.

=item B<PLACEMENT>

Changes how the dialog will be shown. Values:
"FULL", "MAXIMIZED", "MINIMIZED" and "NORMAL". Default: NORMAL. After
L<Show|IUP::Manual::02_Elements/"Show()">/L<Popup|IUP::Manual::02_Elements/"Popup()"> the attribute is set back to "NORMAL". FULL is
similar to FULLSCREEN but only the dialog client area covers the screen
area, menu and decorations will be there but out of the screen. In UNIX
there is a chance that the placement won't work correctly, that depends
on the Window Manager.

=item B<RESIZE>

I<(creation only)> Allows interactively changing the dialogs
size. Default: YES. If RESIZE=NO then MAXBOX will be set to NO. In
Motif the decorations are controlled by the Window Manager and may not
be possible to be changed from IUP.

=item B<SAVEUNDER>

I<[Windows and Motif Only] (creation only)> When this
attribute is true (YES), the dialog stores the original image of the
desktop region it occupies (if the system has enough memory to store
the image). In this case, when the dialog is closed or moved, a
redrawing event is not generated for the windows that were shadowed by
it. Its default value is YES. To save memory disable it for your main
dialog. Not available in GTK.

=item L<SHRINK|IUP::Manual::03_Attributes/SHRINK>

Allows changing the elements
distribution when the dialog is smaller than the minimum size. Default:
NO.

=item B<STARTFOCUS>

Name of the element that must receive the focus right
after the dialog is shown using L<Show|IUP::Manual::02_Elements/"Show()"> or L<Popup|IUP::Manual::02_Elements/"Popup()">. If not
defined then the first control than can receive the focus is selected
(same effect of calling L<NextField|IUP::Manual::02_Elements/"NextField()"> for
the dialog). Updated after SHOW_CB is called and only if the focus was
not changed during the callback.

=item B<XWINDOW>

I<[UNIX Only] (non inheritable, read-only)> Returns the
X-Windows Window (Drawable). Available in the Motif driver or in the
GTK driver in UNIX.

=back

=head2 Exclusive [Windows and GTK Only]

=over

=item B<ACTIVEWINDOW>

I<[Windows and GTK Only] (read-only)> informs if the
dialog is the active window (the window with focus). Can be Yes or No.
(since iup-3.4)

=item B<HIDETASKBAR>

I<[Windows and GTK Only] (write-only)> Action attribute
that when set to "YES", hides the dialog, but does not decrement the
visible dialog count, does not call SHOW_CB and does not mark the
dialog as hidden inside IUP. It is usually used to hide the dialog and
keep the tray icon working without closing the main loop. It has the
same effect as setting LOCKLOOP=Yes and normally hiding the dialog.
IMPORTANT: when you hide using HIDETASKBAR, you must show using
HIDETASKBAR also. Possible values: YES, NO.

=item B<OPACITY>

I<[Windows and GTK Only]> sets the dialog transparency alpha
value. Valid values range from 0 (completely transparent) to 255
(opaque). In Windows set to C<undef> to remove the LAYERED style bit. (GTK
2.12)

=item B<TOPMOST>

I<[Windows and GTK Only]> puts the dialog always in front of
all other dialogs in all applications. Default: NO.

=item B<TRAY>

I<[Windows and GTK Only]> When set to "YES", displays an icon on the system tray. (GTK 2.10)

=item B<TRAYIMAGE>

I<[Windows and GTK Only]> Name of a IUP image to be used as the tray icon. (GTK 2.10)

=item B<TRAYTIP>

I<[Windows and GTK Only]> Tray icon's tooltip text. (GTK 2.10)

=back

=head2 Exclusive [GTK Only]

=over

=item B<DIALOGHINT>

I<(creation-only)> if enabled sets the window type hint to a dialog hint.

=back

=head2 Exclusive [Windows Only]

=over

=item B<BRINGFRONT>

I<[Windows Only] (write-only)> makes the dialog the
foreground window. Use "YES" to activate it. Useful for multithreaded
applications.

=item B<COMPOSITED>

I<[Windows Only] (creation only)> controls if the window
will have an automatic double buffer for all children. Default is "NO".
In Windows Vista it is NOT working as expected.

=item L<CONTROL|IUP::Manual::03_Attributes/CONTROL>

I<[Windows Only] (creation only)> Embeds the dialog inside another window.

=item B<HELPBUTTON>

I<[Windows Only] (creation only)> Inserts a help button in
the same place of the maximize button. It can only be used for dialogs
without the minimize and maximize buttons, and with the menu box. For
the next interaction of the user with a control in the dialog, the
callback L<HELP_CB|IUP::Manual::04_Callbacks/HELP_CB> will be called instead of
the control defined ACTION callback. Possible values: YES, NO. Default:
NO.

=item B<TOOLBOX>

I<[Windows Only] (creation only)> makes the dialog look like a
toolbar. It is only valid if the PARENTDIALOG or NATIVEPARENT attribute
is also defined. Default: NO.

=back

=head2 Exclusive MDI [Windows Only]

=over

=item B<MDIFRAME>

I<(creation only, non inheritable) [Windows Only]> Configure this dialog as a MDI frame. Can be YES or NO. Default: NO.

=item B<MDIACTIVE>

I<[Windows Only] (read-only)> Returns the name of the
current active MDI child. Use IUP::GetAttributeHandle to directly
retrieve the child handle.

=item B<MDIACTIVATE>

I<[Windows Only] (write-only)> Name of a MDI child window
to be activated. If value is "NEXT" will activate the next window after
the current active window. If value is "PREVIOUS" will activate the
previous one.

=item B<MDIARRANGE>

I<[Windows Only] (write-only)> Action to arrange MDI child
windows. Possible values: TILEHORIZONTAL, TILEVERTICAL, CASCADE and
ICON (arrange the minimized icons).

=item B<MDICLOSEALL>

I<[Windows Only] (write-only)> Action to close and destroy
all MDI child windows. The CLOSE_CB callback will be called for each
child.

IMPORTANT: When a MDI child window is closed it is automatically
destroyed. The application can override this returning IUP_IGNORE in
CLOSE_CB.

=item B<MDINEXT>

I<[Windows Only] (read-only)> Returns the name of the next
available MDI child. Use IUP::GetAttributeHandle to directly retrieve the
child handle. Must use MDIACTIVE to retrieve the first child. If the
application is going to destroy the child retrieve the next child
before destroying the current.

=item B<MDICLIENT>

I<[Windows Only] (non inheritable, creation only)> Configure
the canvas as a MDI client. Can be YES or NO. No callbacks
will be called. This canvas will be used internally only by the MDI
Frame and its MDI Children. The MDI frame must have one and only one
MDI client. Default: NO.

=item B<MDIMENU>

I<(creation only) [Windows Only]> Name of a IUP::Menu to be used
as the Window list of a MDI frame. The system will automatically add
the list of MDI child windows there.

=item B<MDICHILD>

I<(creation only) [Windows Only]> Configure this dialog to be
a MDI child. Can be YES or NO. The PARENTDIALOG attribute must also be
defined. Each MDI child is automatically named if it does not have one.
Default: NO.

=back

=head2 CALLBACKS

For more info about concept of callbacks (setting callback handlers etc.)
see L<IUP::Manual::04_Callbacks|IUP::Manual::04_Callbacks>. Callbacks specific to this element:

=over

=item L<CLOSE_CB|IUP::Manual::04_Callbacks/CLOSE_CB>

Called right before the dialog is closed.

=item B<COPYDATA_CB>

I<[Windows Only]>

Called at the first instance, when a
second instance is running. Must set the global attribute
SINGLEINSTANCE to be called. (since iup-3.2)

B<Callback handler prototype:>

 sub copydata_cb_handler {
   my ($self, $cmdLine, $size) = @_;
   #...
 }

=over

B<$self:> reference to the element (IUP::Dialog) that activated the event

B<$cmdLine:> command line of the second instance.

B<$size:> size of the command line string including the null character.

=back

=item L<DROPFILES_CB|IUP::Manual::04_Callbacks/DROPFILES_CB>

I<[Windows and GTK Only]>

Action generated when one or more files are dropped in the dialog.

=item B<MDIACTIVATE_CB>

I<[Windows Only]>

Called when a MDI child window is
activated. Only the MDI child receive this message. It is not called
when the child is shown for the first time.

B<Callback handler prototype:>

 sub mdiactivate_cb_handler {
   my ($self) = @_;
   #...
 }

=over

B<$self:> reference to the element (IUP::Dialog) that activated the event

=back

=item B<MOVE_CB>

I<[Windows and GTK Only]>

Called after the dialog was moved on
screen. The coordinates are the same as the L<SCREENPOSITION|IUP::Manual::03_Attributes/SCREENPOSITION> attribute. (since iup-3.0)

B<Callback handler prototype:>

 sub mdiactivate_cb_handler {
   my ($self, $x, $y) = @_;
   #...
 }

=over

B<$self:> reference to the element (IUP::Dialog) that activated the event

B<$x, y:> coordinates of the new position.

=back

=item L<RESIZE_CB|IUP::Manual::04_Callbacks/RESIZE_CB>

Action generated when the
dialog size is changed. If returns IUP_IGNORE the dialog layout is NOT
recalculated. 

=item L<SHOW_CB|IUP::Manual::04_Callbacks/SHOW_CB>

Called right after the dialog is
showed, hidden, maximized, minimized or restored from
minimized/maximized.

=item B<TRAYCLICK_CB>

I<[Windows and GTK Only]>

Called right after the mouse
button is pressed or released over the tray icon. (GTK 2.10)

B<Callback handler prototype:>

 sub trayclick_cb_handler {
   my ($self, $but, $pressed, $dclick) = @_;
   #...
 }

=over

B<$self:> reference to the element (IUP::Dialog) that activated the event

B<$but:> identifies the activated mouse button. Can be: 1, 2 or 3. Note
that this is different from the BUTTON_CB canvas callback definition.
GTK does not get button=2 messages.

B<$pressed:> indicates the state of the button. Always 1 in GTK.

B<$dclick:> indicates a double click. In GTK double click is simulated.

B<Returns:> IUP_CLOSE will be processed.

=back

=back

The following L<common callbacks|IUP::Manual::04_Callbacks/Common Callbacks> are also accepted:

=over

=item * L<MAP_CB|IUP::Manual::04_Callbacks/MAP_CB>,
L<UNMAP_CB|IUP::Manual::04_Callbacks/UNMAP_CB>,
L<GETFOCUS_CB|IUP::Manual::04_Callbacks/GETFOCUS_CB>,
L<KILLFOCUS_CB|IUP::Manual::04_Callbacks/KILLFOCUS_CB>,
L<ENTERWINDOW_CB|IUP::Manual::04_Callbacks/ENTERWINDOW_CB>,
L<LEAVEWINDOW_CB|IUP::Manual::04_Callbacks/LEAVEWINDOW_CB>,
L<K_ANY|IUP::Manual::04_Callbacks/K_ANY>, L<HELP_CB|IUP::Manual::04_Callbacks/HELP_CB>

=back

=head1 NOTES

Do not associate an L<IUP::Dialog|IUP::Dialog> with the native "dialog" nomenclature
in Windows, GTK or Motif. L<IUP::Dialog|IUP::Dialog> use native standard windows in
all drivers.

Except for the menu, all other elements must be inside a dialog to
interact with the user. Therefore, an interface element will only be
visible if its dialog is also visible.

The order of callback calling is system dependent. For instance, the
RESIZE_CB and the SHOW_CB are called in a different order in Win32 and
in X-Windows when the dialog is shown for the first time.

=head2 Windows MDI

The MDI support is composed of 3 components: the MDI frame window
(IUP::Dialog), the MDI client window (IUP::Canvas) and the MDI children
(IUP::Dialog). Although the MDI client is a IUP::Canvas it is not used
directly by the application, but it must be created and included in the
dialog that will be the MDI frame, other controls can also be available
in the same dialog, like buttons and other canvases composing toolbars
and status area. The following picture illustrates the e components:

=begin HTML

<p><img src="http://kmx.github.io/perl-iup/img-3.9/dlg/mdi.gif"></p>

=end HTML

=head1 EXAMPLES


The element B<IUP::Dialog> is used in the following sample scripts:

=over

=item * L<0-basic/button.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/button.pl> - IUP::Button example

=item * L<0-basic/canvas1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/canvas1.pl> - IUP::Canvas example

=item * L<0-basic/canvas2.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/canvas2.pl> - IUP::Canvas example

=item * L<0-basic/canvas3.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/canvas3.pl> - IUP::Canvas example

=item * L<0-basic/cbox.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/cbox.pl> - IUP::Cbox example

=item * L<0-basic/cells_checkboard.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/cells_checkboard.pl> - IUP::Cells example

=item * L<0-basic/cells_degrade.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/cells_degrade.pl> - IUP::Cells example

=item * L<0-basic/cells_numbering.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/cells_numbering.pl> - IUP::Cells example

=item * L<0-basic/colorbar.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/colorbar.pl> - IUP::ColorBar example

=item * L<0-basic/colorbrowser.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/colorbrowser.pl> - IUP::ColorBrowser example

=item * L<0-basic/dial.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/dial.pl> - IUP::Dial example

=item * L<0-basic/dialog1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/dialog1.pl> - IUP::Dialog example

=item * L<0-basic/dialog2.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/dialog2.pl> - IUP::Dialog example

=item * L<0-basic/drag-demo.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/drag-demo.pl> - IUP::Text DRAG-and-DROP demo (drag part)

=item * L<0-basic/expander.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/expander.pl> - IUP::Expander example

=item * L<0-basic/fill.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/fill.pl> - IUP::Fill Example

=item * L<0-basic/frame1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/frame1.pl> - IUP::Frame Example

=item * L<0-basic/frame2.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/frame2.pl> - IUP::Image example

=item * L<0-basic/gauge.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/gauge.pl> - IUP::Gauge example

=item * L<0-basic/glcanvas1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/glcanvas1.pl> - IUP::CanvasGL example

=item * L<0-basic/glcanvas2.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/glcanvas2.pl> - IUP::CanvasGL example

=item * L<0-basic/glcanvasbox.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/glcanvasbox.pl> - warn "ACTION: x=$x y=$y\n";

=item * L<0-basic/gridbox.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/gridbox.pl> - IUP::GridBox example

=item * L<0-basic/hbox.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/hbox.pl> - IUP::Hbox example

=item * L<0-basic/idle.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/idle.pl> - IUP->SetIdle Example

=item * L<0-basic/image.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/image.pl> - IUP::Image example

=item * L<0-basic/item.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/item.pl> - IUP::Item Example

=item * L<0-basic/label.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/label.pl> - IUP::Label and IUP::Link example

=item * L<0-basic/layoutdialog.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/layoutdialog.pl> - IUP::LayoutDialog example

=item * L<0-basic/list1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/list1.pl> - IUP::List example

=item * L<0-basic/list2.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/list2.pl> - IUP::List example

=item * L<0-basic/mask_matrix.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/mask_matrix.pl> - IUP::Matrix + MASK example

=item * L<0-basic/mask_simple.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/mask_simple.pl> - IUP::Text + MASK example

=item * L<0-basic/matrixlist.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/matrixlist.pl> - IUP::MatrixList example

=item * L<0-basic/matrix_basic.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/matrix_basic.pl> - IUP::Matrix example

=item * L<0-basic/matrix_cbmode.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/matrix_cbmode.pl> - IUP::Matrix (callback mode) example

=item * L<0-basic/menu.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/menu.pl> - IUP::Menu example

=item * L<0-basic/message_clone.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/message_clone.pl>

=item * L<0-basic/mglplot1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/mglplot1.pl> - IUP::MglPlot example

=item * L<0-basic/plot1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/plot1.pl> - IUP::PPlot example

=item * L<0-basic/plot2.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/plot2.pl> - IUP::PPlot example

=item * L<0-basic/plot3.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/plot3.pl> - IUP::PPlot example

=item * L<0-basic/plot4.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/plot4.pl> - IUP::PPlot example

=item * L<0-basic/plot5.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/plot5.pl> - IUP::PPlot example

=item * L<0-basic/plot_advanced.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/plot_advanced.pl> - Plot controls

=item * L<0-basic/pre-dialogs.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/pre-dialogs.pl> - IUP::Expander example

=item * L<0-basic/progressbar1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/progressbar1.pl> - IUP::Progressbar example

=item * L<0-basic/progressbar2.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/progressbar2.pl> - IUP::ProgressBar example

=item * L<0-basic/progressbar3.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/progressbar3.pl> - IUP::ProgressBar example

=item * L<0-basic/radio.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/radio.pl> - IUP::Radio example

=item * L<0-basic/sbox1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/sbox1.pl> - IUP::Sbox example

=item * L<0-basic/sbox2.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/sbox2.pl> - IUP::Sbox example

=item * L<0-basic/scintilla.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/scintilla.pl> - IUP::Scintilla example

=item * L<0-basic/scrollbar.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/scrollbar.pl> - IUP::Canvas (with scrollbar) example

=item * L<0-basic/separator.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/separator.pl> - IUP::Separator example

=item * L<0-basic/submenu.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/submenu.pl> - IUP::Submenu example

=item * L<0-basic/tabs1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/tabs1.pl> - IUP::Tabs example 

=item * L<0-basic/tabs2.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/tabs2.pl> - IUP::Tabs example

=item * L<0-basic/tabs3.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/tabs3.pl> - IUP::Tabs example 

=item * L<0-basic/text1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/text1.pl> - IUP::Text (single line) example

=item * L<0-basic/text2.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/text2.pl> - IUP::Text example

=item * L<0-basic/text_font.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/text_font.pl> - IUP::Text (font) example

=item * L<0-basic/text_format.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/text_format.pl> - IUP::Text (formating) example

=item * L<0-basic/text_multiline.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/text_multiline.pl> - IUP::Text (multiline) example

=item * L<0-basic/timer.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/timer.pl> - IUP::Timer example

=item * L<0-basic/toggle.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/toggle.pl> - IUP::Toggle example

=item * L<0-basic/tray.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/tray.pl> - IUP::Dialog + TRAY / TRAYTIP / TRAYIMAGE example

=item * L<0-basic/tree1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/tree1.pl> - IUP::Tree example (animals) - using helper methods e.g. TreeAddNodes()

=item * L<0-basic/tree2.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/tree2.pl> - IUP::Tree example (figures) - using attribute only interface

=item * L<0-basic/tree3.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/tree3.pl> - IUP::Tree example (figures) - using attribute only interface

=item * L<0-basic/tree_set_attrs.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/tree_set_attrs.pl> - IUP::Tree example (attributes)

=item * L<0-basic/val.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/val.pl> - IUP::Val example

=item * L<0-basic/vbox.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/vbox.pl> - IUP::Vbox example

=item * L<0-basic/zbox.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/0-basic/zbox.pl> - IUP::Zbox example

=item * L<1-apps/app-mdi.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/1-apps/app-mdi.pl> - IUP app example

=item * L<1-apps/app-plot-demo.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/1-apps/app-plot-demo.pl> - dials for zooming

=item * L<1-apps/app-sample1.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/1-apps/app-sample1.pl> - example used for screenshot - IUP.pod

=item * L<1-apps/app-sample2.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/1-apps/app-sample2.pl> - example based on the original sample.c

=item * L<1-apps/app-simple-demo.pl|https://metacpan.org/source/KMX/IUP-0.303/examples/1-apps/app-simple-demo.pl> - example used for screenshot - IUP.pod

=back 



=head1 SEE ALSO

L<IUP::FileDlg|IUP::FileDlg>,
L<IUP::MessageDlg|IUP::MessageDlg>,
L<Destroy|IUP::Manual::02_Elements/"Destroy()">,
L<ShowXY|IUP::Manual::02_Elements/"ShowXY>,
L<Show|IUP::Manual::02_Elements/"Show()">,,
L<Popup|IUP::Manual::02_Elements/"Popup()">

The original doc: L<iupdialog.html|http://www.tecgraf.puc-rio.br/iup/en/dlg/iupdialog.html>
 

=cut