xtd 0.2.0
form.h
Go to the documentation of this file.
1 #pragma once
5 #include "const_form_ref.h"
6 #include "form_border_style.h"
9 #include "form_ref.h"
10 #include "form_start_position.h"
11 #include "form_window_state.h"
12 #include "container_control.h"
13 #include "dialog_result.h"
14 #include "ibutton_control.h"
15 #include "main_menu.h"
16 #include "screen.h"
17 #include "status_bar.h"
18 #include "tool_bar.h"
19 #include <xtd/drawing/icon>
20 #include <xtd/io/path>
21 #include <cstddef>
22 
24 namespace xtd {
26  namespace forms {
28  class application;
29  class application_context;
30  class form;
32 
52  class forms_export_ form : public container_control {
53  struct data;
54 
55  public:
57 
60  using ibutton_control_ref = std::reference_wrapper<xtd::forms::ibutton_control>;
61 
63  using main_menu_ref = std::reference_wrapper<xtd::forms::main_menu>;
64 
66  using status_bar_ref = std::reference_wrapper<xtd::forms::status_bar>;
67 
69  using tool_bar_ref = std::reference_wrapper<xtd::forms::tool_bar>;
71 
73 
77  form();
79 
81 
85  std::optional<ibutton_control_ref> accept_button() const noexcept;
89  form& accept_button(const ibutton_control& value);
93  form& accept_button(std::nullptr_t);
94 
97  static std::optional<form_ref> active_form() noexcept;
98 
101  virtual forms::auto_size_mode auto_size_mode() const noexcept;
105  virtual form& auto_size_mode(forms::auto_size_mode value);
106 
109  std::optional<ibutton_control_ref> cancel_button() const noexcept;
113  form& cancel_button(const ibutton_control& value);
117  form& cancel_button(std::nullptr_t);
118 
121  virtual bool close_box() const noexcept;
125  virtual form& close_box(bool value);
126 
129  virtual bool control_box() const noexcept;
133  virtual form& control_box(bool value);
134 
137  virtual forms::dialog_result dialog_result() const noexcept;
141  virtual form& dialog_result(forms::dialog_result value);
142 
144  using container_control::font;
145  control& font(std::nullptr_t) override;
147 
150  virtual forms::form_border_style form_border_style() const noexcept;
155 
158  virtual bool help_button() const;
162  virtual form& help_button(bool value);
163 
166  virtual const xtd::drawing::icon& icon() const noexcept;
170  virtual form& icon(const xtd::drawing::icon& value);
171 
174  virtual bool maximize_box() const noexcept;
178  virtual form& maximize_box(bool value);
179 
182  virtual std::optional<main_menu_ref> menu() const noexcept;
186  virtual form& menu(const forms::main_menu& value);
190  virtual form& menu(std::nullptr_t);
191 
194  virtual bool minimize_box() const noexcept;
198  virtual form& minimize_box(bool value);
199 
202  bool modal() const noexcept;
203 
206  virtual double opacity() const noexcept;
209  virtual form& opacity(double opacity);
210 
213  virtual std::optional<control_ref> owner() const noexcept;
217  virtual form& owner(const control& value);
221  virtual form& owner(std::nullptr_t);
222 
223  using container_control::parent;
226  control& parent(const control& value) override;
227 
230  virtual bool show_icon() const noexcept;
234  virtual form& show_icon(bool value);
235 
241  virtual bool show_in_taskbar() const noexcept;
248  virtual form& show_in_taskbar(bool value);
249 
252  virtual form_start_position start_position() const noexcept;
256  virtual form& start_position(form_start_position value);
257 
260  virtual std::optional<status_bar_ref> status_bar() const noexcept;
264  virtual form& status_bar(const forms::status_bar& value);
268  virtual form& status_bar(std::nullptr_t);
269 
272  virtual std::optional<tool_bar_ref> tool_bar() const noexcept;
276  virtual form& tool_bar(const forms::tool_bar& value);
280  virtual form& tool_bar(std::nullptr_t);
281 
286  virtual bool top_level() const noexcept;
291  virtual form& top_level(bool top_level);
292 
295  virtual bool top_most() const noexcept;
299  virtual form& top_most(bool value);
300 
301  using container_control::visible;
305  control& visible(bool visible) override;
306 
309  virtual form_window_state window_state() const noexcept;
313  virtual form& window_state(form_window_state value);
315 
317 
321  void activate();
322 
323  void bring_to_front() override;
324 
328  void center_to_screen();
329 
332  void close();
333 
334  using control::create;
340  static form create(const xtd::ustring& text, const drawing::size& size = {-1, -1}, const xtd::ustring& name = xtd::ustring::empty_string);
347  static form create(const xtd::ustring& text, const drawing::point& location, const drawing::size& size = {-1, -1}, const xtd::ustring& name = xtd::ustring::empty_string);
354  static form create(const xtd::ustring& text, form_start_position start_position, const drawing::size& size = {-1, -1}, const xtd::ustring& name = xtd::ustring::empty_string);
362  static form create(const xtd::ustring& text, form_start_position start_position, const drawing::point& location, const drawing::size& size = {-1, -1}, const xtd::ustring& name = xtd::ustring::empty_string);
363 
364  bool pre_process_message(xtd::forms::message& message) override;
365 
368  virtual forms::dialog_result show_dialog();
372  virtual forms::dialog_result show_dialog(const iwin32_window& owner);
373 
377  virtual void show_sheet(const iwin32_window& owner);
378 
382  virtual forms::dialog_result show_sheet_dialog(const iwin32_window& owner);
384 
386 
391 
395 
399 
403 
409 
410  protected:
411  friend class application;
412 
414 
416  forms::create_params create_params() const noexcept override;
417  drawing::size default_size() const noexcept override;
419 
421 
425  virtual void on_activated(const event_args& e);
426 
429  virtual void on_deactivate(const event_args& e);
430 
431  void on_handle_created(const event_args& e) override;
432  void on_handle_destroyed(const event_args& e) override;
433 
436  virtual void on_form_closed(const form_closed_event_args& e);
437 
440  virtual void on_form_closing(form_closing_event_args& e);
441 
442  void on_layout(const event_args& e) override;
443  void on_location_changed(const event_args& e) override;
444  void on_paint(paint_event_args& e) override;
445  void on_region_changed(const event_args& e) override;
446 
449  virtual void on_system_colors_changed(const event_args& e);
450 
451  void on_resize(const event_args& e) override;
452  void wnd_proc(message& message) override;
454 
455  private:
456  friend class application_context;
457  bool closed_() const noexcept;
458  void internal_set_window_state();
459 
460  void create_system_menu();
461  void destroy_system_menu();
462 
463  void fill_in_create_params_border_icons(xtd::forms::create_params& cp) const;
464  void fill_in_create_params_border_styles(xtd::forms::create_params& cp) const;
465  void fill_in_create_params_start_position(xtd::forms::create_params& cp) const;
466  void fill_in_create_params_window_state(xtd::forms::create_params& cp) const;
467 
468  void wm_activate(message& message);
469  void wm_close(message& message);
470  void wm_recreate(message& message);
471  void wm_syscolor_change(message& message);
472 
473  std::shared_ptr<data> data_;
474  static std::optional<form_ref> active_form_;
475  };
476  }
477 }
Specifies the contextual information about an application thread.
Definition: application_context.h:24
event< form, event_handler > activated
Occurs when the form is activated in code or by the user.
Definition: form.h:390
Provides data for the form_closing event.
Definition: form_closing_event_args.h:20
Contains xtd::forms::form_ref alias.
std::reference_wrapper< xtd::forms::ibutton_control > ibutton_control_ref
Represent an xtd::forms::ibutton_control reference.
Definition: form.h:60
dialog_result
Specifies identifiers to indicate the return value of a dialog box.
Definition: dialog_result.h:41
Provides focus-management functionality for controls that can function as a container for other contr...
Definition: container_control.h:23
Represents a Windows toolbar.
Definition: tool_bar.h:50
form_border_style
Specifies the border styles for a form.
Definition: form_border_style.h:20
Represents the base class for classes that contain event data, and provides a value to use for events...
Definition: event_args.h:18
form_start_position
Specifies the initial position of a form.
Definition: form_start_position.h:20
Represents an ordered pair of integer x- and y-coordinates that defines a point in a two-dimensional ...
Definition: point.h:54
form_window_state
Specifies how a form window is displayed.
Definition: form_window_state.h:20
Stores an ordered pair of integers, which specify a height and width.
Definition: size.h:31
Contains xtd::forms::screen component.
The xtd namespace contains all fundamental classes to access Hardware, Os, System, and more.
Definition: system_report.h:17
auto_size_mode
Specifies how a control will behave when its auto_size property is enabled.
Definition: auto_size_mode.h:20
Encapsulates the information needed when creating a control.
Definition: create_params.h:27
std::reference_wrapper< xtd::forms::tool_bar > tool_bar_ref
Represent an xtd::forms::tool_bar reference.
Definition: form.h:69
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:46
std::reference_wrapper< form > form_ref
Represent an xtd::forms::form reference.
Definition: form_ref.h:23
Provides an interface to expose Win32 HWND handles.
Definition: iwin32_window.h:21
event< form, event_handler > system_colors_changed
Occurs when the xtd::drwing::system_colors changes.
Definition: form.h:407
Represents a window or dialog box that makes up an application&#39;s user interface.
Definition: form.h:52
Contains xtd::forms::form_ref alias.
Represents an event.
Definition: event.h:21
Contains xtd::forms::tool_bar container.
Provides data for the xtd::forms::control::paint event.
Definition: paint_event_args.h:28
Provides static methods and properties to manage an application, such as methods to start and stop an...
Definition: application.h:50
event< form, event_handler > deactivate
Occurs when the form loses focus and is no longer the active form.
Definition: form.h:394
Contains xtd::forms::container_control class.
Contains xtd::forms::status_bar container.
Contains xtd::forms::dialog_result enum class.
std::reference_wrapper< xtd::forms::status_bar > status_bar_ref
Represent an xtd::forms::status_bar reference.
Definition: form.h:66
Implements a Windows message.
Definition: message.h:26
Represents the base functionality for all menus. Although tool_strip_drop_down and tool_strip_drop_do...
Definition: menu.h:35
Contains xtd::forms::form_border_style enum class.
Defines the base class for controls, which are components with visual representation.
Definition: control.h:78
xtd::forms::style_sheets::control form
The form data allows you to specify the box of a form control.
Definition: form.h:21
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:402
The xtd::forms namespace contains classes for creating Windows-based applications that take full adva...
Definition: about_box.h:13
static const ustring empty_string
Represents the empty string.
Definition: ustring.h:53
Contains xtd::forms::ibutton_control interface.
Contains xtd::forms::form_closed_event_args event handler.
std::reference_wrapper< control > control_ref
Represents a control reference.
Definition: control_ref.h:23
Specifies that both the x and y coordinates of the control are defined.
Represents the menu structure of a form.
Definition: main_menu.h:38
std::reference_wrapper< xtd::forms::main_menu > main_menu_ref
Represent an xtd::forms::main_menu reference.
Definition: form.h:63
Allows a control to act like a button on a form.
Definition: ibutton_control.h:24
Contains xtd::forms::form_start_position enum class.
event< form, form_closed_event_handler > form_closed
Occurs after the form is closed.
Definition: form.h:398
Represents a Windows status bar control.
Definition: status_bar.h:46
The xtd::forms::status_bar_panel displays text in the standard font.
Contains xtd::forms::form_closing_event_handler event handler.
size_t size
Represents a size of any object in bytes.
Definition: types.h:195
Provides data for the form_closed event.
Definition: form_closed_event_args.h:20