xtd - Reference Guide  0.1.1
Modern c++17/20 framework to create console, GUI and unit test applications on Windows, macOS, Linux, iOS and android.
form.h
Go to the documentation of this file.
1 #pragma once
5 #include <cstddef>
6 #include <xtd/drawing/icon.h>
7 #include <xtd/io/path.h>
8 #include "form_border_style.h"
11 #include "form_start_position.h"
12 #include "form_window_state.h"
13 #include "container_control.h"
14 #include "dialog_result.h"
15 #include "ibutton_control.h"
16 #include "main_menu.h"
17 #include "screen.h"
18 
20 namespace xtd {
22  namespace forms {
24  class application;
25  class application_context;
27 
41  public:
44  form();
45 
48  std::optional<std::reference_wrapper<ibutton_control>> accept_button() const {return accept_button_;}
56  form& accept_button(nullptr_t);
57 
60  static std::optional<std::reference_wrapper<form>> active_form() {return active_form_;}
61 
64  virtual forms::auto_size_mode auto_size_mode() const {return auto_size_mode_;}
69 
72  std::optional<std::reference_wrapper<ibutton_control>> cancel_button() const {return cancel_button_;}
80  form& cancel_button(nullptr_t);
81 
84  virtual bool close_box() const {return close_box_;}
88  virtual form& close_box(bool value);
89 
92  virtual bool control_box() const {return control_box_;}
96  virtual form& control_box(bool value);
97 
98  drawing::size default_size() const override {return {300, 300};}
99 
102  virtual forms::dialog_result dialog_result() const {return dialog_result_;}
107 
110  virtual forms::form_border_style form_border_style() const {return form_border_style_;}
115 
118  virtual const xtd::drawing::icon& icon() const {return icon_;}
122  virtual form& icon(const xtd::drawing::icon& value);
123 
126  virtual bool help_button() const {return help_button_;}
130  virtual form& help_button(bool value);
131 
134  virtual bool maximize_box() const {return maximize_box_;}
138  virtual form& maximize_box(bool value);
139 
142  virtual std::optional<forms::main_menu> menu() const {return menu_;}
146  virtual form& menu(const forms::main_menu& value);
150  virtual form& menu(nullptr_t);
151 
154  virtual bool minimize_box() const {return minimize_box_;}
158  virtual form& minimize_box(bool value);
159 
162  bool modal() const {return get_state(state::modal);}
163 
166  virtual std::optional<control_ref> owner() const {return from_handle(owner_);}
170  virtual form& owner(const control& value);
171 
175  control& parent(const control& value) override;
176 
179  virtual bool show_icon() const {return show_icon_;}
183  virtual form& show_icon(bool value);
184 
187  virtual form_start_position start_position() const {return start_position_;}
192 
197  virtual bool top_level() const {return get_state(state::top_level);}
202  virtual form& top_level(bool top_level);
203 
206  virtual bool top_most() const {return top_most_;}
210  virtual form& top_most(bool value);
211 
214  virtual double opacity() const {return opacity_;}
217  virtual form& opacity(double opacity);
218 
223  control& visible(bool visible) override;
224 
227  virtual form_window_state window_state() const {return window_state_;}
232 
235  void activate();
236 
237  void bring_to_front() override;
238 
243 
246  void close();
247 
249 
257 
261  virtual void show_sheet(const iwin32_window& owner);
262 
267 
271 
275 
279 
283 
284  protected:
285  friend class application;
286 
287  forms::create_params create_params() const override;
288 
291  virtual void on_activated(const event_args& e) {activated(*this, e);}
292 
295  virtual void on_deactivate(const event_args& e) {deactivate(*this, e);}
296 
297  void on_handle_created(const event_args &e) override;
298  void on_handle_destroyed(const event_args &e) override;
299 
302  virtual void on_form_closed(const form_closed_event_args& e) {form_closed(*this, e);}
303 
306  virtual void on_form_closing(form_closing_event_args& e) {form_closing(*this, e);}
307 
308  void on_layout(const event_args& e) override;
309  void on_location_changed(const event_args& e) override;
310  void on_resize(const event_args& e) override;
311  void wnd_proc(message& message) override;
312 
315  virtual void wm_activate(message& message);
316 
319  virtual void wm_close(message& message);
320 
322  std::optional<std::reference_wrapper<ibutton_control>> accept_button_;
323  std::optional<std::reference_wrapper<ibutton_control>> cancel_button_;
324  static std::optional<std::reference_wrapper<form>> active_form_;
325  bool close_box_ = true;
326  bool control_box_ = true;
329  bool help_button_ = true;
330  xtd::drawing::icon icon_ = xtd::drawing::icon::empty;
331  bool maximize_box_ = true;
332  std::optional<forms::main_menu> menu_;
333  bool minimize_box_ = true;
334  std::shared_ptr<screen> previous_screen_;
335  bool show_icon_ = true;
336  bool show_in_taskbar_ = true;
340 
341  private:
342  friend class application_context;
343  bool can_close_ = false;
344  bool top_most_ = false;
345  intptr_t owner_ = 0;
346  void internal_set_window_state();
347  intptr_t parent_before_show_dialog_ = 0;
348  double opacity_ = 1.0;
349  };
350  }
351 }
Represents a Windows icon, which is a small bitmap image that is used to represent an object....
Definition: icon.h:22
Stores an ordered pair of integers, which specify a height and width.
Definition: size.h:25
Represents the base class for classes that contain event data, and provides a value to use for events...
Definition: event_args.h:18
Represents an event.
Definition: event.h:21
Specifies the contextual information about an application thread.
Definition: application_context.h:26
Provides static methods and properties to manage an application, such as methods to start and stop an...
Definition: application.h:54
Provides focus-management functionality for controls that can function as a container for other contr...
Definition: container_control.h:21
Defines the base class for controls, which are components with visual representation.
Definition: control.h:67
virtual std::optional< control_ref > parent() const
Gets the parent container of the control.
Definition: control.h:596
virtual bool visible() const
Gets a value indicating whether the control and all its child controls are displayed.
Definition: control.h:674
Provides data for the form_closed event.
Definition: form_closed_event_args.h:19
Provides data for the form_closing event.
Definition: form_closing_event_args.h:19
Represents a window or dialog box that makes up an application's user interface.
Definition: form.h:40
void center_to_screen()
Centers the position of the form within the bounds of the parent form.
virtual bool control_box() const
Gets a value indicating whether a control box is displayed in the caption bar of the form.
Definition: form.h:92
virtual forms::dialog_result dialog_result() const
Gets the dialog result for the form.
Definition: form.h:102
virtual bool maximize_box() const
Gets a value indicating whether the Maximize button is displayed in the caption bar of the form.
Definition: form.h:134
virtual form & window_state(form_window_state value)
Sets a value that indicates whether form is minimized, maximized, or normal.
void activate()
Activates the form and gives it focus.
virtual forms::dialog_result show_dialog()
Shows the form as a modal dialog box.
virtual form & start_position(form_start_position value)
Sets the starting position of the form at run time.
virtual form & dialog_result(forms::dialog_result value)
Sets the dialog result for the form.
virtual void on_form_closing(form_closing_event_args &e)
Raises the form::form_closing event.
Definition: form.h:306
void on_handle_destroyed(const event_args &e) override
Raises the control::handle_destroyed event.
virtual form & show_icon(bool value)
Sets a value indicating whether an icon is displayed in the caption bar of the form.
virtual std::optional< control_ref > owner() const
Gets the form that owns this form.
Definition: form.h:166
virtual form & form_border_style(forms::form_border_style value)
Gets the border style of the form.
virtual form & menu(const forms::main_menu &value)
Sets the main_menu that is displayed in the form.
bool pre_process_message(xtd::forms::message &message) override
Preprocesses keyboard or input messages within the message loop before they are dispatched.
void bring_to_front() override
Brings the control to the front of the z-order.
virtual form & top_most(bool value)
Sets a value indicating whether the form should be displayed as a topmost form.
virtual void on_activated(const event_args &e)
Raises the form::activated event.
Definition: form.h:291
forms::create_params create_params() const override
Gets the required creation parameters when the control handle is created.
form()
Initializes a new instance of the Form class.
std::optional< std::reference_wrapper< ibutton_control > > cancel_button() const
Gets the button control that is clicked when the user presses the ESC key.
Definition: form.h:72
virtual form_window_state window_state() const
Gets a value that indicates whether form is minimized, maximized, or normal.
Definition: form.h:227
virtual bool show_icon() const
Gets a value indicating whether an icon is displayed in the caption bar of the form.
Definition: form.h:179
form & cancel_button(const ibutton_control &value)
Gets the button control that is clicked when the user presses the ESC key.
bool modal() const
Gets a value indicating whether this form is displayed modally.
Definition: form.h:162
virtual const xtd::drawing::icon & icon() const
Gets the icon for the form.
Definition: form.h:118
virtual void on_deactivate(const event_args &e)
Raises the form::deactivate event.
Definition: form.h:295
virtual forms::auto_size_mode auto_size_mode() const
Gets the mode by which the form automatically resizes itself.
Definition: form.h:64
static std::optional< std::reference_wrapper< form > > active_form()
Gets the currently active form for this application.
Definition: form.h:60
virtual form & top_level(bool top_level)
Sets a value indicating whether to display the form as a top-level window.
virtual form & opacity(double opacity)
Sets form opacity.
virtual void wm_activate(message &message)
Processes the active message the form control receives as the top-level window.
virtual form & menu(nullptr_t)
Sets the main_menu that is displayed in the form.
virtual void show_sheet(const iwin32_window &owner)
Shows the form as a sheet dialog box.
void on_handle_created(const event_args &e) override
Raises the control::handle_created event.
virtual form & minimize_box(bool value)
Sets a value indicating whether the Minimize button is displayed in the caption bar of the form.
virtual form & control_box(bool value)
Sets a value indicating whether a control box is displayed in the caption bar of the form.
virtual void wm_close(message &message)
Processes the close message the form control receives as the top-level window.
virtual form & maximize_box(bool value)
Sets a value indicating whether the Maximize button is displayed in the caption bar of the form.
virtual form & icon(const xtd::drawing::icon &value)
Sets the icon for the form.
virtual form & close_box(bool value)
Sets a value indicating whether a close box is displayed in the caption bar of the form.
void on_layout(const event_args &e) override
Raises the control::layout event.
virtual void on_form_closed(const form_closed_event_args &e)
Raises the form::form_closed event.
Definition: form.h:302
drawing::size default_size() const override
Gets the default size of the control.
Definition: form.h:98
control & parent(const control &value) override
Sets the parent container of the control.
void close()
Closes the form.
virtual bool top_level() const
Gets a value indicating whether to display the form as a top-level window.
Definition: form.h:197
control & visible(bool visible) override
Sets a value indicating whether the control and all its child controls are displayed.
form & accept_button(nullptr_t)
Sets the button on the form that is clicked when the user presses the ENTER key.
virtual double opacity() const
Gets form opacity.
Definition: form.h:214
virtual forms::form_border_style form_border_style() const
Gets the border style of the form.
Definition: form.h:110
std::optional< std::reference_wrapper< ibutton_control > > accept_button() const
Gets the button on the form that is clicked when the user presses the ENTER key.
Definition: form.h:48
virtual bool minimize_box() const
Gets a value indicating whether the Minimize button is displayed in the caption bar of the form.
Definition: form.h:154
virtual std::optional< forms::main_menu > menu() const
Gets the main_menu that is displayed in the form.
Definition: form.h:142
virtual form & owner(const control &value)
Sets the form that owns this form.
void wnd_proc(message &message) override
Processes Windows messages.
virtual bool close_box() const
Gets a value indicating whether a close box is displayed in the caption bar of the form.
Definition: form.h:84
virtual bool help_button() const
Gets a value indicating whether a Help button should be displayed in the caption box of the form.
Definition: form.h:126
virtual forms::dialog_result show_sheet_dialog(const iwin32_window &owner)
Shows the form as a modal sheet dialog box.
virtual form_start_position start_position() const
Gets the starting position of the form at run time.
Definition: form.h:187
form & cancel_button(nullptr_t)
Gets the button control that is clicked when the user presses the ESC key.
form & accept_button(const ibutton_control &value)
Sets the button on the form that is clicked when the user presses the ENTER key.
virtual forms::dialog_result show_dialog(const iwin32_window &owner)
Shows the form as a modal dialog box with the specified owner. @parm owner Any object that implements...
virtual bool top_most() const
Gets a value indicating whether the form should be displayed as a topmost form.
Definition: form.h:206
void on_location_changed(const event_args &e) override
Raises the control::location_changed event.
virtual form & help_button(bool value)
Sets a value indicating whether a Help button should be displayed in the caption box of the form.
virtual form & auto_size_mode(forms::auto_size_mode value)
Sets the mode by which the form automatically resizes itself.
void on_resize(const event_args &e) override
Raises the control::resize event.
Allows a control to act like a button on a form.
Definition: ibutton_control.h:22
Provides an interface to expose Win32 HWND handles.
Definition: iwin32_window.h:19
Represents the menu structure of a form.
Definition: main_menu.h:30
Implements a Windows message.
Definition: message.h:25
Contains xtd::forms::container_control class.
Contains xtd::forms::dialog_result enum class.
Contains xtd::forms::form_border_style enum class.
Contains xtd::forms::form_closed_event_args event handler.
Contains xtd::forms::form_closing_event_handler event handler.
Contains xtd::forms::form_start_position enum class.
Contains xtd::forms::form_window_state enum class.
event< form, form_closing_event_handler > form_closing
Occurs before the form is closed.
Definition: form.h:282
event< form, form_closed_event_handler > form_closed
Occurs after the form is closed.
Definition: form.h:278
event< form, event_handler > activated
Occurs when the form is activated in code or by the user.
Definition: form.h:270
event< form, event_handler > deactivate
Occurs when the form loses focus and is no longer the active form.
Definition: form.h:274
#define forms_export_
Define shared library export.
Definition: forms_export.h:13
@ e
The E key.
dialog_result
Specifies identifiers to indicate the return value of a dialog box.
Definition: dialog_result.h:39
form_window_state
Specifies how a form window is displayed.
Definition: form_window_state.h:18
auto_size_mode
Specifies how a control will behave when its auto_size property is enabled.
Definition: auto_size_mode.h:18
form_start_position
Specifies the initial position of a form.
Definition: form_start_position.h:18
form_border_style
Specifies the border styles for a form.
Definition: form_border_style.h:18
@ none
Nothing is returned from the dialog box. This means that the modal dialog continues running.
@ normal
A default sized window.
@ windows_default_location
The form is positioned at the Windows default location and has the dimensions specified in the form's...
@ sizable
A resizable border.
Contains xtd::forms::ibutton_control interface.
Contains xtd::drawing::icon class.
Contains xtd::forms::main_menu menu.
The xtd::forms namespace contains classes for creating Windows-based applications that take full adva...
Definition: about_box.h:13
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition: system_report.h:17
Contains xtd::io::path class.
Contains xtd::forms::screen component.