xtd - Reference Guide  0.1.0
Modern c++17 framework to create console, gui and unit test applications on Windows, macOS and Linux.
xtd::forms::form Class Reference

Represents a window or dialog box that makes up an application's user interface. More...

#include <form.h>

Inheritance diagram for xtd::forms::form:
xtd::forms::container_control xtd::forms::scrollable_control xtd::forms::control xtd::forms::component xtd::forms::iwin32_window xtd::forms::trace_form_base xtd::forms::debug_form xtd::forms::trace_form

Public Types

using control_collection = layout::arranged_element_collection< control_ref >
 Represents a collection of controls. More...
 

Public Member Functions

 form ()
 Initializes a new instance of the Form class. More...
 
std::optional< std::reference_wrapper< ibutton_control > > accept_button () const
 
formaccept_button (const ibutton_control &value)
 
formaccept_button (nullptr_t)
 
void activate ()
 
std::optional< control_refactive_control () const
 Gets the active control on the container control. More...
 
void active_control (const control &active_control)
 Sets the active control on the container control. More...
 
void active_control (std::nullptr_t)
 Resets the active control on the container control. More...
 
virtual anchor_styles anchor () const
 Gets the edges of the container to which a control is bound and determines how a control is resized with its parent. More...
 
virtual controlanchor (anchor_styles anchor)
 Gets the edges of the container to which a control is bound and determines how a control is resized with its parent. More...
 
virtual bool auto_scroll () const
 
virtual scrollable_controlauto_scroll (bool auto_scroll)
 
drawing::size auto_scroll_margin () const
 
scrollable_controlauto_scroll_margin (const drawing::size &value)
 
virtual drawing::point auto_scroll_point () const
 Gets where this control is scrolled to in scroll_control_into_view(control). More...
 
virtual bool auto_size () const
 Gets a value that indicates whether the control resizes based on its contents. More...
 
virtual controlauto_size (bool auto_size)
 Sets a value that indicates whether the control resizes based on its contents. More...
 
virtual forms::auto_size_mode auto_size_mode () const
 
virtual formauto_size_mode (forms::auto_size_mode value)
 
virtual drawing::color back_color () const
 Gets the background color for the control. More...
 
virtual controlback_color (const drawing::color &color)
 Sets the background color for the control. More...
 
async_result_invoke begin_invoke (delegate< void(std::vector< std::any >)> value, const std::vector< std::any > &args)
 
async_result_invoke begin_invoke (delegate< void()> value)
 
virtual int32_t bottom () const
 Gets the distance, in pixels, between the bottom edge of the control and the top edge of its container's client area. More...
 
virtual drawing::rectangle bounds () const
 Gets the size and location of the control including its nonclient elements, in pixels, relative to the parent control. More...
 
virtual controlbounds (const drawing::rectangle &bounds)
 Sets the size and location of the control including its nonclient elements, in pixels, relative to the parent control. More...
 
void bring_to_front () override
 
virtual bool can_focus () const
 Gets a value indicating whether the control can receive focus. More...
 
bool can_raise_events () const override
 Determines if events can be raised on the control. More...
 
virtual bool can_select () const
 Gets a value indicating whether the control can be selected. More...
 
std::optional< std::reference_wrapper< ibutton_control > > cancel_button () const
 
formcancel_button (const ibutton_control &value)
 
formcancel_button (nullptr_t)
 
void center_to_screen ()
 
virtual const drawing::rectangleclient_rectangle () const
 Gets the rectangle that represents the client area of the control. More...
 
virtual const drawing::sizeclient_size () const
 Gets the height and width of the client area of the control. More...
 
virtual controlclient_size (const drawing::size &client_size)
 Sets the height and width of the client area of the control. More...
 
void close ()
 
virtual bool close_box () const
 
virtual formclose_box (bool value)
 
virtual std::string compagny_name () const
 Gets the name of the company or creator of the application containing the control. More...
 
virtual bool control_box () const
 
virtual formcontrol_box (bool value)
 
virtual control_collectioncontrols ()
 Gets the collection of controls contained within the control. More...
 
virtual const control_collectioncontrols () const
 Gets the collection of controls contained within the control. More...
 
void create_control ()
 
drawing::graphics create_graphics () const
 
virtual void create_handle ()
 
virtual bool created ()
 Gets a value indicating whether the control has been created. More...
 
virtual forms::cursor cursor () const
 
virtual controlcursor (const forms::cursor &cursor)
 
virtual drawing::color default_back_color () const
 Gets the default background color of the control. More...
 
virtual forms::cursor default_cursor () const
 
virtual drawing::font default_font () const
 
virtual drawing::color default_fore_color () const
 
drawing::size default_size () const override
 
void destroy_control ()
 
virtual void destroy_handle ()
 
virtual forms::dialog_result dialog_result () const
 
virtual formdialog_result (forms::dialog_result value)
 
drawing::rectangle display_rectangle () const override
 
virtual dock_style dock () const
 Gets or sets which control borders are docked to its parent control and determines how a control is resized with its parent. More...
 
virtual controldock (dock_style dock)
 
virtual bool double_buffered () const
 
virtual controldouble_buffered (bool double_buffered)
 
virtual bool enabled () const
 
virtual controlenabled (bool enabled)
 
void end_invoke (async_result_invoke async)
 
bool focus ()
 
virtual bool focused () const
 
virtual drawing::font font () const
 
virtual controlfont (const drawing::font &font)
 
virtual drawing::color fore_color () const
 
virtual controlfore_color (const drawing::color &color)
 
virtual forms::form_border_style form_border_style () const
 
virtual formform_border_style (forms::form_border_style value)
 
intptr_t handle () const override
 Gets the handle to the window represented by the implementer. More...
 
virtual int32_t height () const
 
virtual controlheight (int32_t height)
 
virtual bool help_button () const
 
virtual formhelp_button (bool value)
 
virtual void hide ()
 
virtual bool hscroll () const
 
virtual scrollable_controlhscroll (bool hscroll)
 
virtual const xtd::drawing::iconicon () const
 
virtual formicon (const xtd::drawing::icon &value)
 
virtual void invalidate () const
 
virtual void invalidate (bool invalidate_children) const
 
virtual void invalidate (const drawing::rectangle &rect) const
 
virtual void invalidate (const drawing::rectangle &rect, bool invalidate_children) const
 
void invoke (delegate< void(std::vector< std::any >)> value, const std::vector< std::any > &args)
 
void invoke (delegate< void()> value)
 
bool is_handle_created () const
 
virtual int32_t left () const
 
virtual controlleft (int32_t left)
 
virtual drawing::point location () const
 
virtual controllocation (const drawing::point &location)
 
virtual forms::padding margin () const
 
virtual controlmargin (const forms::padding &margin)
 
virtual bool maximize_box () const
 
virtual formmaximize_box (bool value)
 
virtual std::optional< forms::main_menumenu () const
 
virtual formmenu (const forms::main_menu &value)
 
virtual formmenu (nullptr_t)
 
virtual bool minimize_box () const
 
virtual formminimize_box (bool value)
 
bool modal () const
 
virtual const std::string & name () const
 
virtual controlname (const std::string &name)
 
virtual std::optional< control_refowner () const
 
virtual formowner (const control &value)
 
virtual forms::padding padding () const
 
virtual controlpadding (const forms::padding &padding)
 
controlparent (const control &value) override
 
virtual std::optional< control_refparent () const
 
virtual controlparent (std::nullptr_t)
 
void perform_layout ()
 Forces the control to apply layout logic to all its child controls. More...
 
xtd::drawing::point point_to_client (const xtd::drawing::point &p)
 
xtd::drawing::point point_to_screen (const xtd::drawing::point &p)
 
bool pre_process_message (xtd::forms::message &message) override
 
virtual std::string product_name () const
 
bool recreating_handle () const
 
virtual void refresh () const
 
void resume_layout ()
 Resumes usual layout logic. More...
 
void resume_layout (bool perform_layout)
 Resumes usual layout logic, optionally forcing an immediate layout of pending layout requests. More...
 
virtual int32_t right () const
 
intptr_t send_message (intptr_t hwnd, int32_t msg, intptr_t wparam, intptr_t lparam) const
 
void set_auto_size_mode (auto_size_mode auto_size_mode)
 
void set_bounds (int32_t x, int32_t y, int32_t width, int32_t height)
 
void set_bounds (int32_t x, int32_t y, int32_t width, int32_t height, bounds_specified specified)
 
virtual void show ()
 
virtual forms::dialog_result show_dialog ()
 
virtual forms::dialog_result show_dialog (const iwin32_window &owner)
 
virtual bool show_icon () const
 
virtual formshow_icon (bool value)
 
virtual void show_sheet (const iwin32_window &owner)
 
virtual forms::dialog_result show_sheet_dialog (const iwin32_window &owner)
 
virtual const drawing::sizesize () const
 
virtual controlsize (const drawing::size &size)
 
virtual form_start_position start_position () const
 
virtual formstart_position (form_start_position value)
 
void suspend_layout ()
 Temporarily suspends the layout logic for the control. More...
 
virtual std::any tag () const
 Gets the object that contains data about the control. More...
 
virtual controltag (std::any tag)
 Sets the object that contains data about the control. More...
 
virtual const std::string & text () const
 
virtual controltext (const std::string &text)
 
virtual std::string to_string () const
 
virtual int32_t top () const
 
virtual controltop (int32_t top)
 
virtual bool top_level () const
 Gets a value indicating whether to display the form as a top-level window. More...
 
virtual formtop_level (bool top_level)
 Sets a value indicating whether to display the form as a top-level window. More...
 
virtual std::optional< control_reftop_level_control () const
 
virtual bool top_most () const
 
virtual formtop_most (bool value)
 
virtual void update () const
 
controlvisible (bool visible) override
 
virtual bool visible () const
 
virtual bool vscroll () const
 
virtual scrollable_controlvscroll (bool vscroll)
 
virtual int32_t width () const
 
virtual controlwidth (int32_t width)
 
virtual form_window_state window_state () const
 
virtual formwindow_state (form_window_state value)
 

Static Public Member Functions

static std::optional< std::reference_wrapper< form > > active_form ()
 
template<typename control_t >
static std::unique_ptr< control_t > create (const drawing::point &location={-1, -1}, const drawing::size &size={-1, -1}, const drawing::color &back_color=drawing::color::empty, const drawing::color &fore_color=drawing::color::empty)
 
template<typename control_t >
static std::unique_ptr< control_t > create (const control &parent, const drawing::point &location={-1, -1}, const drawing::size &size={-1, -1}, const drawing::color &back_color=drawing::color::empty, const drawing::color &fore_color=drawing::color::empty)
 
template<typename control_t >
static std::unique_ptr< control_t > create (const std::string &text, const drawing::point &location={-1, -1}, const drawing::size &size={-1, -1}, const drawing::color &back_color=drawing::color::empty, const drawing::color &fore_color=drawing::color::empty)
 
template<typename control_t >
static std::unique_ptr< control_t > create (const control &parent, const std::string &text, const drawing::point &location={-1, -1}, const drawing::size &size={-1, -1}, const drawing::color &back_color=drawing::color::empty, const drawing::color &fore_color=drawing::color::empty)
 
static std::optional< control_reffrom_child_handle (intptr_t handle)
 
static std::optional< control_reffrom_handle (intptr_t handle)
 
static forms::keys modifier_keys ()
 
static forms::mouse_buttons mouse_buttons ()
 

Public Attributes

event< form, event_handler< control & > > activated
 
event< control, event_handler< control & > > auto_size_changed
 
event< control, event_handler< control & > > back_color_changed
 
event< control, event_handler< control & > > click
 
event< control, event_handler< control & > > client_size_changed
 
event< control, control_event_handler< control & > > control_added
 
event< control, control_event_handler< control & > > control_removed
 
event< control, event_handler< control & > > cursor_changed
 
event< form, event_handler< control & > > deactivate
 
event< control, event_handler< control & > > dock_changed
 
event< control, event_handler< control & > > double_click
 
event< control, event_handler< control & > > enabled_changed
 
event< control, event_handler< control & > > font_changed
 
event< control, event_handler< control & > > fore_color_changed
 
event< form, form_closed_event_handler< control & > > form_closed
 
event< form, form_closing_event_handler< control & > > form_closing
 
event< control, event_handler< control & > > got_focus
 
event< control, event_handler< control & > > handle_created
 
event< control, event_handler< control & > > handle_destroyed
 
event< control, key_event_handler< control & > > key_down
 
event< control, key_press_event_handler< control & > > key_press
 
event< control, key_event_handler< control & > > key_up
 
event< control, event_handler< control & > > layout
 Occurs when a control should reposition its child controls. More...
 
event< control, event_handler< control & > > location_changed
 
event< control, event_handler< control & > > lost_focus
 
event< control, mouse_event_handler< control & > > mouse_click
 
event< control, mouse_event_handler< control & > > mouse_double_click
 
event< control, mouse_event_handler< control & > > mouse_down
 
event< control, event_handler< control & > > mouse_enter
 
event< control, mouse_event_handler< control & > > mouse_horizontal_wheel
 
event< control, event_handler< control & > > mouse_leave
 
event< control, mouse_event_handler< control & > > mouse_move
 
event< control, mouse_event_handler< control & > > mouse_up
 
event< control, mouse_event_handler< control & > > mouse_wheel
 
event< control, paint_event_handler< control & > > paint
 
event< control, event_handler< control & > > parent_changed
 
event< control, event_handler< control & > > resize
 
event< control, event_handler< control & > > size_changed
 
event< control, event_handler< control & > > text_changed
 
event< control, event_handler< control & > > visible_changed
 

Protected Member Functions

forms::create_params create_params () const override
 Gets the required creation parameters when the control handle is created. More...
 
virtual void def_wnd_proc (message &message)
 
bool design_mode () const
 Gets a value that indicates whether the component is currently in design mode. More...
 
bool get_style (control_styles flag) const
 Retrieves the value of the specified control style bit for the control. More...
 
drawing::size measure_control () const override
 Measure this control. More...
 
drawing::size measure_text () const
 
virtual void on_activated (const event_args &e)
 
virtual void on_auto_size_changed (const event_args &e)
 
virtual void on_back_color_changed (const event_args &e)
 
virtual void on_click (const event_args &e)
 
virtual void on_client_size_changed (const event_args &e)
 
virtual void on_control_added (const control_event_args &e)
 
virtual void on_control_removed (const control_event_args &e)
 
virtual void on_create_control ()
 
virtual void on_cursor_changed (const event_args &e)
 
virtual void on_deactivate (const event_args &e)
 
virtual void on_dock_changed (const event_args &e)
 
virtual void on_double_click (const event_args &e)
 
virtual void on_enabled_changed (const event_args &e)
 
virtual void on_font_changed (const event_args &e)
 
virtual void on_fore_color_changed (const event_args &e)
 
virtual void on_form_closed (const form_closed_event_args &e)
 
virtual void on_form_closing (form_closing_event_args &e)
 
virtual void on_got_focus (const event_args &e)
 
void on_handle_created (const event_args &e) override
 
void on_handle_destroyed (const event_args &e) override
 
virtual void on_key_down (key_event_args &e)
 
virtual void on_key_press (key_press_event_args &e)
 
virtual void on_key_up (key_event_args &e)
 
void on_layout (const event_args &e) override
 
virtual void on_location_changed (const event_args &e)
 
virtual void on_lost_focus (const event_args &e)
 
virtual void on_mouse_click (const mouse_event_args &e)
 
virtual void on_mouse_double_click (const mouse_event_args &e)
 
virtual void on_mouse_down (const mouse_event_args &e)
 
virtual void on_mouse_enter (const event_args &e)
 
virtual void on_mouse_horizontal_wheel (const mouse_event_args &e)
 
virtual void on_mouse_leave (const event_args &e)
 
virtual void on_mouse_move (const mouse_event_args &e)
 
virtual void on_mouse_up (const mouse_event_args &e)
 
virtual void on_mouse_wheel (const mouse_event_args &e)
 
virtual void on_paint (paint_event_args &e)
 
virtual void on_parent_back_color_changed (const event_args &e)
 
virtual void on_parent_changed (const event_args &e)
 
virtual void on_parent_cursor_changed (const event_args &e)
 
virtual void on_parent_font_changed (const event_args &e)
 
virtual void on_parent_fore_color_changed (const event_args &e)
 
void on_resize (const event_args &e) override
 
virtual void on_size_changed (const event_args &e)
 
virtual void on_text_changed (const event_args &e)
 
virtual void on_visible_changed (const event_args &e)
 
virtual void recreate_handle ()
 
virtual void set_bounds_core (int32_t x, int32_t y, int32_t width, int32_t height, bounds_specified specified)
 Performs the work of setting the specified bounds of this control. More...
 
virtual void set_client_size_core (int32_t width, int32_t height)
 Sets the size of the client area of the control. More...
 
void set_style (control_styles flag, bool value)
 Sets a specified control_styles flag to either true or false. More...
 
virtual void wm_activate (message &message)
 
virtual void wm_close (message &message)
 
void wnd_proc (message &message) override
 Processes Windows messages. More...
 

Protected Attributes

std::optional< std::reference_wrapper< ibutton_control > > accept_button_
 
std::optional< std::reference_wrapper< ibutton_control > > cancel_button_
 
bool close_box_ = true
 
bool control_box_ = true
 
forms::dialog_result dialog_result_ = forms::dialog_result::none
 
forms::form_border_style form_border_style_ = form_border_style::sizable
 
bool help_button_ = true
 
xtd::drawing::icon icon_ = xtd::drawing::icon::empty
 
bool maximize_box_ = true
 
std::optional< forms::main_menumenu_
 
bool minimize_box_ = true
 
std::shared_ptr< screenprevious_screeen_
 
bool show_icon_ = true
 
bool show_in_taskbar_ = true
 
form_start_position start_position_ = form_start_position::windows_default_location
 
form_window_state window_state_ = form_window_state::normal
 

Static Protected Attributes

static std::optional< std::reference_wrapper< form > > active_form_
 

Friends

class application
 
class application_context
 

Detailed Description

Represents a window or dialog box that makes up an application's user interface.

Remarks
A form is a representation of any window displayed in your application. The Form class can be used to create standard, tool, borderless, and floating windows. You can also use the form class to create modal windows such as a dialog box. A special kind of form, the multiple-document interface (MDI) form, can contain other forms called MDI child forms. An MDI form is created by setting the is_mdi_container property to true. MDI child forms are created by setting the mdi_parent property to the MDI parent form that will contain the child form.
Using the properties available in the form class, you can determine the appearance, size, color, and window management features of the window or dialog box you are creating. The text property allows you to specify the caption of the window in the title bar. The size and desktop_location properties allow you to define the size and position of the window when it is displayed. You can use the fore_color color property to change the default foreground color of all controls placed on the form. The form_border_style, minimize_box, and maximize_box properties allow you to control whether the form can be minimized, maximized, or resized at run time.
In addition to properties, you can use the methods of the class to manipulate a form. For example, you can use the show_dialog method to show a form as a modal dialog box. You can use the set_desktop_location method to position the form on the desktop.
Example
The following code example demonstrate the use of form control.
#include <xtd/xtd>
using namespace std;
using namespace xtd;
using namespace xtd::forms;
class form1 : public form {
public:
form1() {
text("form1");
location({300, 200});
size({640, 480});
form_closing += [&](control& sender, form_closing_event_args& e) {
e.cancel(message_box::show(*this, "Are you sure you want exit?", "Close Form", message_box_buttons::yes_no, message_box_icon::question) == dialog_result::no);
};
button_close.parent(*this);
button_close.text("Close");
button_close.auto_size(true);
button_close.location({10, 10});
button_close.click += {*this, &form::close};
button_exit.parent(*this);
button_exit.text("Exit");
button_exit.auto_size(true);
button_exit.location({100, 10});
button_exit.click += overload_<>(&application::exit);
button_exit_thread.parent(*this);
button_exit_thread.text("Exit thread");
button_exit_thread.auto_size(true);
button_exit_thread.location({190, 10});
button_exit_thread.click += &application::exit_thread;
}
private:
forms::button button_close;
forms::button button_exit;
forms::button button_exit_thread;
};
int main() {
application::run(form1());
}

The documentation for this class was generated from the following file: