47 class CLASS_DECL_ACME element :
48 virtual public ::object,
49 virtual public ::user::command_update_target,
50 virtual public ::timer_dispatch
61 reposNoPosLeftOver = 0x8000
69 PropertyBaseWndInterface = 0,
70 PropertyDrawBaseWndInterface
78 GeneralEventPosCreate1,
79 GeneralEventPosCreate2,
80 GeneralEventPosCreate3,
81 GeneralEventPosCreate4,
82 GeneralEventPosCreate5
104 bool m_bUserElementOk;
109 ::user::check m_check;
118 virtual void create_window();
119 virtual void _create_window();
122 virtual ::user::check & check();
124 virtual ::user::text & text();
129 void operator()(
::timer * ptimer)
override;
132 virtual void create_message_queue(const ::scoped_string & scopedstrName);
135 virtual ::acme::user::interaction * acme_user_interaction();
136 virtual ::acme::windowing::window * acme_windowing_window();
137 virtual ::operating_system::window operating_system_window();
140 virtual ::user::interaction_base * user_interaction_base();
141 virtual ::windowing::window_base * windowing_window_base();
144 virtual ::user::interaction * user_interaction();
145 virtual ::windowing::window * windowing_window();
156 void destroy()
override;
158 virtual ::acme::user::interaction * acme_host_interaction();
160 virtual ::user::interaction * host_interaction();
162 virtual ::acme::windowing::window * acme_host_window();
164 virtual ::windowing::window * host_window();
166 virtual ::user::form * get_form();
168 virtual ::user::form * get_parent_form();
170 virtual ::user::element * get_form_user_element();
172 virtual ::user::element * get_parent_form_user_element();
174 void enable_window(
bool bEnable =
true)
override;
176 virtual void PreSubClassWindow();
178 virtual bool is_waiting_for_dialog_response();
180 virtual ::payload wait_for_dialog_response(
const class ::time & timeTimeout = ::time::infinity());
182 virtual void set_dialog_response(const ::payload & payloadResult);
184 virtual ::payload get_dialog_response();
196 virtual bool GetFocusRect(::i32_rectangle & rectangle);
199 virtual void window_minimize();
200 virtual void window_maximize();
201 virtual void window_full_screen();
202 virtual void window_restore();
203 virtual void window_close();
206 virtual void on_window_deiconified();
207 virtual void on_window_activated();
208 virtual void on_window_iconified();
209 virtual void on_window_deactivated();
210 virtual void on_window_shown();
211 virtual void on_window_hidden();
214 virtual ::e_display defer_window_get_best_display_deduction();
217 virtual void _on_window_simple_action(const_char_pointer pszActionName, ::user::activation_token * puseractivationtoken);
220 virtual void on_window_close();
223 virtual void set_cursor(enum_cursor ecursor);
226 virtual void set_mouse_capture();
227 virtual bool is_mouse_captured();
228 virtual bool has_mouse_capture();
229 virtual void release_mouse_capture();
230 virtual bool defer_release_mouse_capture();
236 virtual bool defer_perform_entire_reposition_process(::user::mouse * pmouse);
238 virtual bool defer_perform_entire_resizing_process(const ::experience::e_frame & eframeSizing, ::user::mouse * pmouse);
241 virtual void defer_update_display();
244 virtual enum_control_type get_control_type();
247 virtual void add_fps_interest(::particle * pparticle);
248 virtual void erase_fps_interest(::particle * pparticle);
249 virtual bool is_fps_interest(::particle * pparticle);
251 virtual void display(::e_display edisplay = e_display_default, const ::user::activation & useractivation = {});
254 virtual string get_title();
257 virtual void show_software_keyboard(::user::element * pelement);
259 virtual void hide_software_keyboard(::user::element * pelement);
265 virtual bool has_pending_redraw_flags();
267 virtual void default_message_handler(::message::message * pmessage);
269 virtual void message_handler(::message::message * pmessage);
273 virtual void on_select();
275 virtual bool is_place_holder();
277 virtual ::f64 _001GetTopLeftWeightedOccludedOpaqueRate();
280 virtual bool _is_window()
const;
281 virtual bool _is_this_window()
const;
283 virtual ::user::interaction * first_child();
284 virtual ::user::interaction * last_child();
285 virtual ::user::interaction * last_sibling();
286 virtual ::user::interaction * next_sibling();
287 virtual ::user::interaction * previous_sibling();
288 virtual ::user::interaction * first_sibling();
289 virtual ::user::interaction * next_sibling(::user::interaction * pinteraction);
290 virtual ::user::interaction * previous_sibling(::user::interaction * pinteraction);
292 virtual ::user::interaction * bottom_child();
293 virtual ::user::interaction * top_child();
294 virtual ::user::interaction * bottom_sibling();
295 virtual ::user::interaction * under_sibling();
296 virtual ::user::interaction * above_sibling();
297 virtual ::user::interaction * top_sibling();
298 virtual ::user::interaction * above_sibling(::user::interaction * pinteraction);
299 virtual ::user::interaction * under_sibling(::user::interaction * pinteraction);
307 virtual void CheckAutoCenter();
309 virtual void track_mouse_hover();
310 virtual void track_mouse_leave();
312 virtual void update_dialog_controls(channel * ptarget);
313 virtual void CenterWindow(::user::interaction * pAlternateOwner =
nullptr);
319 virtual void update_data(
bool bSaveAndValidate =
true);
328 virtual void _001UpdateWindow();
330 virtual void queue_selection_synchronization();
337 virtual void design_down();
338 virtual void design_up();
340 virtual void fps_interest_stop();
346 virtual void on_configuration_change(::user::element * pprimitiveSource);
350 virtual void on_reposition();
351 virtual void on_size();
372 virtual string get_class_name();
380 virtual void create_child(::user::interaction * puserinteractionParent);
387 virtual void ActivateTopParent();
391 virtual void destroy_window();
409 virtual void host_post(const ::procedure & procedure);
415 virtual lresult send_message(::user::enum_message eusermessage,
::wparam wparam = {},
::lparam lparam = {}, const ::i32_point & point = {});
417 virtual lresult send_message(::message::message * pmessage);
419 virtual lresult message_call(::user::enum_message eusermessage,
::wparam wparam = {},
::lparam lparam = {}, const ::i32_point & point = {});
420 virtual lresult message_call(::message::message * pmessage);
422 virtual void on_message(::message::message * pmessage);
426 virtual lresult send_x11_event(
void * phappening);
434 virtual void post_simple_command(
const enum_simple_command & ecommand, const ::lparam &
lparam = 0);
447 virtual bool is_host_top_level();
450 virtual bool is_ascendant(element * puiIsAscendant,
bool bIncludeSelf);
451 virtual bool is_parent(element * puiIsParent);
452 virtual bool is_child(element * puiIsChild);
453 virtual bool is_descendant(element * puiIsDescendant,
bool bIncludeSelf);
455 virtual bool is_descendant_of_or_owned_by(::user::element * puiAscendantCandidate,
bool bIncludeSelf);
456 virtual bool is_ascendant_or_owner_of(::user::element * puiDescendantCandidate,
bool bIncludeSelf);
458 virtual bool is_ascendant_of(element * puiIsDescendant,
bool bIncludeSelf);
459 virtual bool is_parent_of(element * puiIsChild);
460 virtual bool is_child_of(element * puiIsParent);
461 virtual bool is_descendant_of(element * puiIsAscendant,
bool bIncludeSelf);
463 virtual atom GetDlgCtrlId()
const;
464 virtual atom SetDlgCtrlId(const ::atom &
atom);
479 virtual void set_rectangle(const ::i32_rectangle & rectangle);
480 virtual void set_position(const ::i32_point & point);
481 virtual void set_size(const ::i32_size & size);
485 virtual void redraw();
491 virtual void edit_on_set_focus(::user::interaction * pinteraction);
492 virtual void edit_on_kill_focus(::user::interaction * pinteraction);
499 virtual void set_interaction_rectangle(const ::i32_rectangle & rectangle);
501 virtual ::i32_rectangle get_rectangle();
502 virtual ::i32_rectangle get_window_rectangle();
505 virtual character_count get_window_text(char_pointer pszStringBuf, character_count nMaxCount);
507 virtual string get_window_text();
508 virtual void get_window_text(
string & rString);
509 virtual character_count get_window_text_length();
513 virtual bool is_this_visible(enum_layout elayout);
519 virtual bool _001IsPointInside(const ::i32_point & point);
520 virtual ::user::interaction * _001FromPoint(::i32_point point,
bool bTestedIfParentVisible =
false);
522 virtual void OnLinkClick(const ::scoped_string & scopedstr, const ::scoped_string & scopedstrTarget =
nullptr);
524 virtual ::user::interaction * get_child_by_name(const ::scoped_string & scopedstrName, ::collection::index iItem = -1, ::i32 iLevel = -1);
525 virtual ::user::interaction * get_child_by_id(const ::atom &
atom, ::collection::index iItem = -1, ::i32 iLevel = -1);
526 virtual ::user::element * get_primitive_by_id(const ::atom &
atom, ::collection::index iItem = -1, ::i32 iLevel = -1);
530 virtual ::acme::user::interaction * acme_get_wnd();
531 virtual ::user::interaction * get_wnd();
532 virtual ::user::interaction * get_wnd(::u32 nCmd);
536 virtual ::user::element * set_parent(::user::element * pinteraction);
537 virtual ::user::element * set_owner(::user::element * pinteraction);
540 virtual ::windowing::window * window_get_parent();
542 virtual ::user::interaction * get_parent();
543 virtual ::user::interaction * get_owner();
544 virtual ::user::interaction * get_parent_owner();
545 virtual ::user::interaction * get_parent_or_owner();
546 virtual ::user::interaction * get_top_level_owner();
549 virtual ::user::interaction * _top_level();
552 virtual bool is_top_level_window();
554 virtual void send_message_to_descendants(::user::enum_message eusermessage,
::wparam wparam = {},
::lparam lparam = {},
bool bDeep =
true,
bool bOnlyPerm =
false);
556 virtual void route_message_to_descendants(::message::message * pmessage);
557 virtual void pre_translate_message(::message::message * pmessage);
560 virtual ::i32 get_descendant_level(::user::element * puserelement);
562 virtual ::user::interaction * get_focusable_descendant();
564 virtual void RepositionBars(::draw2d::graphics_pointer &pgraphics, ::u32 nIDFirst, ::u32 nIDLast,
565 ::user::interaction *puserinteractionLeftOver =
nullptr, ::u32 nFlag = reposDefault,
566 ::i32_rectangle *prectParam =
nullptr, const ::i32_rectangle &rectangleX = {},
567 bool bStretch =
true);
569 virtual ::user::interaction * ChildWindowFromPoint(const ::i32_point & point);
570 virtual ::user::interaction * ChildWindowFromPoint(const ::i32_point & point, ::u32 nFlags);
578 virtual ::user::interaction * get_next_sibling_window();
582 virtual void set_tool_window(
bool bSet =
true);
585 virtual ::user::interaction * get_next_window(
bool bIgnoreChildren =
false, ::user::interaction * puiInteractionStop =
nullptr);
586 virtual ::user::interaction * get_window(enum_next enext);
589 virtual ::user::interaction * GetLastActivePopup();
594 virtual void pre_subclass_window();
611 virtual void * detach_win32_HWND();
614 virtual ::windowing::window * window();
626 virtual void _000OnMouseLeave(::message::message * pmessage);
633 virtual void set_context_org(::draw2d::graphics_pointer & pgraphics);
635 virtual void viewport_screen_to_client(::i32_sequence2 & sequence);
636 virtual void viewport_client_to_screen(::i32_sequence2 & sequence);
637 virtual void viewport_client_to_screen(::i32_rectangle & point);
638 virtual void viewport_screen_to_client(::i32_rectangle & point);
641 virtual string get_window_default_matter();
642 virtual string get_window_icon_matter();
643 virtual ::u32 get_window_default_style();
644 virtual enum_window_type get_window_type();
647 virtual void add_child_handler(::particle * pparticle, const ::atom & atomChild,
bool bPriority =
false);
650 virtual bool is_selected(
::item * pitem);
652 void handle(
::topic * ptopic, ::handler_context * phandlercontext)
override;
689 virtual void on_after_graphical_update();
692 virtual void set_bitmap_source(const ::scoped_string & scopedstrBitmapSource);
693 virtual void clear_bitmap_source();
696 virtual bool _001OnBeforeEnterIconic();
697 virtual bool _001OnBeforeEnterNormal();
698 virtual bool _001OnBeforeEnterZoomed();
699 virtual bool _001OnBeforeEnterFullScreen();
702 virtual bool _001OnBeforeEnterAppearance();
705 virtual void _001OnAfterEnterIconic();
706 virtual void _001OnAfterEnterNormal();
707 virtual void _001OnAfterEnterZoomed();
708 virtual void _001OnAfterEnterFullScreen();
711 virtual void _001OnAfterEnterAppearance();
714 virtual bool _001OnBeforeExitIconic();
715 virtual bool _001OnBeforeExitNormal();
716 virtual bool _001OnBeforeExitZoomed();
717 virtual bool _001OnBeforeExitFullScreen();
720 virtual bool _001OnBeforeExitAppearance();
723 virtual void _001OnAfterExitIconic();
724 virtual void _001OnAfterExitNormal();
725 virtual void _001OnAfterExitZoomed();
726 virtual void _001OnAfterExitFullScreen();
729 virtual void _001OnAfterExitAppearance();
739 virtual void on_add_owned(::user::element * pprimitive);
751 virtual ::f32 preferred_dpi_x();
753 virtual ::f32 preferred_dpi_y();
755 virtual ::f32 preferred_density();
761 virtual void set_need_redraw(const ::i32_rectangle_array_base & rectangleaScreenNeedRedraw = {}, ::draw2d::graphics * pgraphics =
nullptr,
::function < void() >
function =
nullptr,
bool bAscendants =
true);
762 virtual void set_need_load_form_data();
763 virtual void set_need_save_form_data();
764 virtual void post_redraw(
bool bAscendants =
true);
769 virtual void keyboard_focus_OnTimer(::i32 iTimer);
770 virtual void keyboard_focus_OnChar(::message::message * pmessage);
771 virtual void keyboard_focus_OnSysChar(::message::message * pmessage);
772 virtual void keyboard_focus_OnKeyDown(::message::message * pmessage);
773 virtual void keyboard_focus_OnKeyUp(::message::message * pmessage);
778 pointer < T > get_typed_parent()
785 auto puiParent = get_parent_primitive();
787 while (puiParent !=
nullptr)
799 puiParent = puiParent->get_parent_primitive();
809 virtual ::user::element * get_parent_primitive();
811 virtual ::user::prototype_impl * get_primitive_impl();
813 virtual ::user::interaction * get_first_child_window();
816 virtual bool keyboard_focus_is_focusable();
818 virtual bool keyboard_focus_OnChildKillFocus();
819 virtual element * keyboard_get_next_focusable(element * pfocus =
nullptr,
bool bSkipChild =
false,
bool bSkipSiblings =
false,
bool bSkipParent =
false);
821 virtual void set_keyboard_focus();
824 virtual ::user::element * get_keyboard_focus();
825 virtual element * keyboard_set_focus_next(
bool bSkipChild =
false,
bool bSkipSiblings =
false,
bool bSkipParent =
false);
830 virtual void mouse_focus_OnLButtonUp(::message::message * pmessage);
833 virtual bool _001CanEnterScreenSaver();
838 virtual void on_reset_focus_start_tick();
850#ifdef WINDOWS_DESKTOP
863 virtual ::i32 get_total_page_count(::handler_context * pcontext);
866 virtual void edit_on_text(const ::scoped_string & scopedstr);
867 virtual void edit_on_sel(character_count iBeg, character_count iEnd);
868 virtual void insert_text(const ::scoped_string & scopedstr,
bool bForceNewStep, const ::action_context & context);
871 virtual void on_text_composition(const ::scoped_string & scopedstr);
872 virtual void on_text_commit(const ::scoped_string & scopedstr);
873 virtual void on_text_composition_done();
876 virtual void set_input_content_rect(
const i32_rectangle & rectangle);
877 virtual void set_input_selection_rect(
const i32_rectangle & rectangle);
879 virtual i32_rectangle get_input_content_rect();
880 virtual i32_rectangle get_input_selection_rect();
882 virtual bool InputConnectionBeginBatchEdit(
bool bSuper);
883 virtual bool InputConnectionEndBatchEdit(
bool bSuper);
884 virtual bool InputConnectionCommitText(const ::scoped_string & scopedstr, character_count iNewCursorPosition,
bool bSuper);
885 virtual bool InputConnectionDeleteSurroundingText(character_count iBeforeLength, character_count iAfterLength,
bool bSuper);
886 virtual bool InputConnectionSetComposingText(const ::scoped_string & scopedstr, character_count iNewCursorPosition,
bool bSuper);
887 virtual bool InputConnectionSetComposingRegion(character_count iStart, character_count iEnd,
bool bSuper);
888 virtual bool InputConnectionSetSelection(character_count iStart, character_count iEnd,
bool bSuper);
889 virtual bool InputConnectionFinishComposingText(
bool bSuper);
902 virtual ::user::element * first_child_user_element();
903 virtual ::user::element * top_user_element();
904 virtual ::user::element * under_user_element();
905 virtual ::user::element * above_user_element();
906 virtual ::user::element * next_user_element();
907 virtual ::user::element * previous_user_element();
910 virtual void pick_single_file_to_save(
911 const ::file::file_dialog_filter & filedialogfiltera,
915 virtual void pick_single_file_to_open(
916 const ::file::file_dialog_filter & filedialogfiltera,
920 virtual void pick_multiple_file(
921 const ::file::file_dialog_filter & filedialogfiltera,
925 virtual void pick_single_folder(
928 virtual bool update_impact();
929 virtual bool on_impact_update();
930 virtual bool on_before_impact_update();
931 virtual void on_after_impact_update();
934 virtual bool scroll_bar_x_visible(enum_layout elayout = e_layout_design);
935 virtual bool scroll_bar_y_visible(enum_layout elayout = e_layout_design);
938 virtual ::trace_statement & raw_trace_statement_prefix(::trace_statement & statement)
const;
939 ::trace_statement & trace_statement_prefix(::trace_statement & statement)
const override;
942 virtual bool on_window_create(
void * pCREATESTRUCT);
943 virtual void on_window_position(const ::i32_point & point);
944 virtual void on_window_size(const ::i32_size & size);
945 virtual void on_window_set_focus();
946 virtual void on_window_show(
bool bShow,
int iDetail);
947 virtual bool on_window_activate(::i32 iActivate,
bool bMinimized, const ::operating_system::window & operatingsystemwindow);
948 virtual bool on_window_mouse_activate(::i32 & iResult, const ::operating_system::window & operatingsystemwindowTop,
949 ::i32 iHitTest, ::i32 iMessage);
952 virtual bool is_window_visible();
953 virtual bool is_window_active();
954 virtual bool is_window_stored_iconic();
955 virtual bool is_window_zoomed();
956 virtual bool is_window_full_screen();
957 virtual bool is_window_iconic();
958 virtual ::f32 get_window_scale();
961 virtual ::i32_point screen_to_window_client(const ::i32_point & point);
962 virtual ::i32_rectangle screen_to_window_client(const ::i32_rectangle & rectangle);
963 virtual ::i32_point window_client_to_screen(const ::i32_point & point);
964 virtual ::i32_rectangle window_client_to_screen(const ::i32_rectangle & rectangle);
967 virtual void set_active_window();
968 virtual void set_window_text(const ::scoped_string & scopedstr);
969 virtual void set_window_text_source(const ::a_string_function & astringfunction);
970 virtual void set_window_style(::i32 iStyle);
971 virtual ::i64 get_window_style();
972 virtual void show_window(::user_interface::enum_show_window eshowwindow);
973 virtual void set_window_position(const ::operating_system::window & operatingsystemwindow, const ::i32_point & point, const ::i32_size & size, ::i32 iSetWindowPosFlags);
974 virtual void window_invalidate_rect(const ::i32_rectangle * prectangle,
bool bErase);
975 virtual void update_window();
976 virtual void redraw_window(const ::i32_rectangle * prectangle,
void * pHRGN, ::i32 iRedrawFlags);
977 virtual void window_set_focus();
978 virtual void set_foreground_window(::user::activation_token *puseractivationtoken);
979 virtual ::i32_rectangle window_get_client_rect();
980 virtual ::i32_rectangle get_window_rect();
981 virtual bool defer_update_system_menu();
982 virtual void dump_operating_system_child_window_hierarchy();