deferred class
	EV_WIDGET_IMP

General
	cluster: implementation_mswin
	description: 
		"EiffelVision widget, mswindows implementation.
		
		Note:
		1 - The parent of a widget cannot be void, except for a
		window. Therefore, each feature that call the parent
		here need to be redefine by EV_TITLED_WINDOW to check if
		parent is `Void'.
		2 - The current class would be the equivalent of a wel_window
		Yet, it doesn't inherit from wel_window. Then, all the
		feature we used are defined as deferred. They will be
		implemented directly by the heirs thanks to inheritance
		from a heir of wel_window."

Ancestors
	EV_DOCKABLE_SOURCE_IMP*
	EV_PICK_AND_DROPABLE_IMP*
	EV_SIZEABLE_IMP*
	EV_WEL_KEY_CONVERSION
	EV_WIDGET_ACTION_SEQUENCES_IMP*
	EV_WIDGET_I*
	WEL_BIT_OPERATIONS
	WEL_WINDOWS_ROUTINES
	WEL_WORD_OPERATIONS

Action sequences
	conforming_pick_actions: EV_NOTIFY_ACTION_SEQUENCE
	create_conforming_pick_actions: EV_NOTIFY_ACTION_SEQUENCE
	create_focus_in_actions: EV_NOTIFY_ACTION_SEQUENCE
	create_focus_out_actions: EV_NOTIFY_ACTION_SEQUENCE
	create_key_press_actions: EV_KEY_ACTION_SEQUENCE
	create_key_press_string_actions: EV_KEY_STRING_ACTION_SEQUENCE
	create_key_release_actions: EV_KEY_ACTION_SEQUENCE
	create_mouse_wheel_actions: EV_INTEGER_ACTION_SEQUENCE
	create_pick_actions: EV_PND_START_ACTION_SEQUENCE
	create_pick_ended_actions: EV_PND_FINISHED_ACTION_SEQUENCE
	create_pointer_button_press_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
	create_pointer_button_release_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
	create_pointer_double_press_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
	create_pointer_enter_actions: EV_NOTIFY_ACTION_SEQUENCE
	create_pointer_leave_actions: EV_NOTIFY_ACTION_SEQUENCE
	create_pointer_motion_actions: EV_POINTER_MOTION_ACTION_SEQUENCE
	create_resize_actions: EV_GEOMETRY_ACTION_SEQUENCE
	dock_ended_actions: EV_NOTIFY_ACTION_SEQUENCE
	dock_started_actions: EV_NOTIFY_ACTION_SEQUENCE
	drop_actions: EV_PND_ACTION_SEQUENCE
	file_drop_actions: ACTION_SEQUENCE [TUPLE [LIST [STRING_32]]]
	focus_in_actions: EV_NOTIFY_ACTION_SEQUENCE
	focus_out_actions: EV_NOTIFY_ACTION_SEQUENCE
	key_press_actions: EV_KEY_ACTION_SEQUENCE
	key_press_string_actions: EV_KEY_STRING_ACTION_SEQUENCE
	key_release_actions: EV_KEY_ACTION_SEQUENCE
	mouse_wheel_actions: EV_INTEGER_ACTION_SEQUENCE
	pick_actions: EV_PND_START_ACTION_SEQUENCE
	pick_ended_actions: EV_PND_FINISHED_ACTION_SEQUENCE
	pointer_button_press_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
	pointer_button_release_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
	pointer_double_press_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
	pointer_enter_actions: EV_NOTIFY_ACTION_SEQUENCE
	pointer_leave_actions: EV_NOTIFY_ACTION_SEQUENCE
	pointer_motion_actions: EV_POINTER_MOTION_ACTION_SEQUENCE
	resize_actions: EV_GEOMETRY_ACTION_SEQUENCE

Queries
	absolute_x: INTEGER_32
	absolute_y: INTEGER_32
	accept_cursor: EV_POINTER_STYLE
	actual_drop_target_agent: FUNCTION [ANY, TUPLE [INTEGER_32, INTEGER_32], EV_ABSTRACT_PICK_AND_DROPABLE]
	awaiting_movement: BOOLEAN
	background_color: EV_COLOR
	capture_enabled: BOOLEAN
	client_rect: WEL_RECT
	closest_dockable_target: EV_DOCKABLE_TARGET
	Cursor_on_widget: CELL [EV_WIDGET_IMP]
	cwin_get_next_dlggroupitem (hdlg, hctl: POINTER; previous: BOOLEAN): POINTER
	cwin_get_next_dlgtabitem (hdlg, hctl: POINTER; previous: BOOLEAN): POINTER
	Default_accept_cursor: EV_POINTER_STYLE
	Default_deny_cursor: EV_POINTER_STYLE
	default_key_processing_handler: PREDICATE [ANY, TUPLE [EV_KEY]]
	Default_parent: EV_INTERNAL_SILLY_WINDOW_IMP
	Default_pixmaps: EV_STOCK_PIXMAPS
	default_style: INTEGER_32
	deny_cursor: EV_POINTER_STYLE
	destroyed: BOOLEAN
	dockable_dialog_target: EV_DOCKABLE_DIALOG
	Drag_and_drop_starting_movement: INTEGER_32
	Drag_cursor: EV_POINTER_STYLE
	exists: BOOLEAN
	Focus_on_widget: CELL [EV_WIDGET_IMP]
	foreground_color: EV_COLOR
	foreground_window: WEL_WINDOW
	get_next_target (a_widget: EV_WIDGET): EV_DOCKABLE_TARGET
	Global_drag_targets: ARRAYED_LIST [INTEGER_32]
	Global_pnd_targets: HASH_TABLE [INTEGER_32, INTEGER_32]
	has_capture: BOOLEAN
	has_focus: BOOLEAN
	has_heavy_capture: BOOLEAN
	has_parent: BOOLEAN
	has_tabstop: BOOLEAN
	height: INTEGER_32
	help_context: FUNCTION [ANY, TUPLE, EV_HELP_CONTEXT]
	Insert_label: EV_CELL
	Insert_label_imp: EV_CELL_I
	Insert_sep: EV_TOOL_BAR_SEPARATOR
	Insert_sep_imp: EV_TOOL_BAR_SEPARATOR_I
	internal_non_sensitive: BOOLEAN
	internal_pointer_style: EV_POINTER_STYLE
	Internal_screen: EV_SCREEN
	is_control_in_window (hwnd_control: POINTER): BOOLEAN
	is_displayed: BOOLEAN
	is_dock_executing: BOOLEAN
	is_dockable: BOOLEAN
	is_external_docking_enabled: BOOLEAN
	is_external_docking_relative: BOOLEAN
	is_show_requested: BOOLEAN
	is_transport_enabled: BOOLEAN
	is_window (hwnd: POINTER): BOOLEAN
	Key_0: INTEGER_32
	Key_1: INTEGER_32
	Key_2: INTEGER_32
	Key_3: INTEGER_32
	Key_4: INTEGER_32
	Key_5: INTEGER_32
	Key_6: INTEGER_32
	Key_7: INTEGER_32
	Key_8: INTEGER_32
	Key_9: INTEGER_32
	Key_a: INTEGER_32
	Key_alt: INTEGER_32
	Key_b: INTEGER_32
	Key_back_space: INTEGER_32
	Key_backquote: INTEGER_32
	Key_backslash: INTEGER_32
	Key_c: INTEGER_32
	Key_caps_lock: INTEGER_32
	Key_close_bracket: INTEGER_32
	key_code_from_key_string (key_string: STRING_GENERAL): INTEGER_32
	key_code_from_wel (a_wel_code: INTEGER_32): INTEGER_32
	key_code_to_wel (a_key_code: INTEGER_32): INTEGER_32
	Key_comma: INTEGER_32
	Key_ctrl: INTEGER_32
	Key_d: INTEGER_32
	Key_dash: INTEGER_32
	Key_delete: INTEGER_32
	key_down (virtual_key: INTEGER_32): BOOLEAN
	Key_down_arrow: INTEGER_32
	Key_e: INTEGER_32
	Key_end: INTEGER_32
	Key_enter: INTEGER_32
	Key_equal: INTEGER_32
	Key_escape: INTEGER_32
	Key_f: INTEGER_32
	Key_f1: INTEGER_32
	Key_f10: INTEGER_32
	Key_f11: INTEGER_32
	Key_f12: INTEGER_32
	Key_f2: INTEGER_32
	Key_f3: INTEGER_32
	Key_f4: INTEGER_32
	Key_f5: INTEGER_32
	Key_f6: INTEGER_32
	Key_f7: INTEGER_32
	Key_f8: INTEGER_32
	Key_f9: INTEGER_32
	Key_g: INTEGER_32
	Key_h: INTEGER_32
	Key_home: INTEGER_32
	Key_i: INTEGER_32
	Key_insert: INTEGER_32
	Key_j: INTEGER_32
	Key_k: INTEGER_32
	Key_l: INTEGER_32
	Key_left: INTEGER_32
	Key_left_meta: INTEGER_32
	key_locked (virtual_key: INTEGER_32): BOOLEAN
	Key_m: INTEGER_32
	Key_menu: INTEGER_32
	Key_n: INTEGER_32
	Key_num_lock: INTEGER_32
	Key_numpad_0: INTEGER_32
	Key_numpad_1: INTEGER_32
	Key_numpad_2: INTEGER_32
	Key_numpad_3: INTEGER_32
	Key_numpad_4: INTEGER_32
	Key_numpad_5: INTEGER_32
	Key_numpad_6: INTEGER_32
	Key_numpad_7: INTEGER_32
	Key_numpad_8: INTEGER_32
	Key_numpad_9: INTEGER_32
	Key_numpad_add: INTEGER_32
	Key_numpad_decimal: INTEGER_32
	Key_numpad_divide: INTEGER_32
	Key_numpad_multiply: INTEGER_32
	Key_numpad_subtract: INTEGER_32
	Key_o: INTEGER_32
	Key_open_bracket: INTEGER_32
	Key_p: INTEGER_32
	Key_page_down: INTEGER_32
	Key_page_up: INTEGER_32
	Key_pause: INTEGER_32
	Key_period: INTEGER_32
	Key_q: INTEGER_32
	Key_quote: INTEGER_32
	Key_r: INTEGER_32
	Key_right: INTEGER_32
	Key_right_meta: INTEGER_32
	Key_s: INTEGER_32
	Key_scroll_lock: INTEGER_32
	Key_semicolon: INTEGER_32
	Key_shift: INTEGER_32
	Key_slash: INTEGER_32
	Key_space: INTEGER_32
	Key_strings: ARRAY [STRING_32]
	Key_t: INTEGER_32
	Key_tab: INTEGER_32
	key_to_string (key_data: INTEGER_32): STRING_32
	Key_u: INTEGER_32
	Key_up_arrow: INTEGER_32
	Key_v: INTEGER_32
	Key_w: INTEGER_32
	Key_x: INTEGER_32
	Key_y: INTEGER_32
	Key_z: INTEGER_32
	Managed: BOOLEAN
	minimum_height: INTEGER_32
	minimum_width: INTEGER_32
	mode_is_drag_and_drop: BOOLEAN
	mode_is_pick_and_drop: BOOLEAN
	mode_is_target_menu: BOOLEAN
	Nc_minheight: INTEGER_32
	Nc_minsize: INTEGER_32
	Nc_minwidth: INTEGER_32
	next_dlggroupitem (hdlg, hctl: POINTER; previous: BOOLEAN): POINTER
	next_dlgtabitem (hdlg, hctl: POINTER; previous: BOOLEAN): POINTER
	next_tabstop_widget (start_widget: EV_WIDGET; search_pos: INTEGER_32; forwards: BOOLEAN): EV_WIDGET_IMP
	next_tabstop_widget_from_parent (start_widget: EV_WIDGET; search_pos: INTEGER_32; forwards: BOOLEAN): EV_WIDGET_IMP
	not_external_docking_enabled: BOOLEAN
	not_is_external_docking_relative: BOOLEAN
	original_parent_position: INTEGER_32
	original_pressure: REAL_64
	original_x: INTEGER_32
	original_x_offset: INTEGER_16
	original_x_tilt: REAL_64
	original_y: INTEGER_32
	original_y_offset: INTEGER_16
	original_y_tilt: REAL_64
	originating_source: EV_DOCKABLE_SOURCE_I
	parent: EV_CONTAINER
	parent_is_sensitive: BOOLEAN
	pebble: ANY
	pebble_function: FUNCTION [ANY, TUPLE, ANY]
	pebble_positioning_enabled: BOOLEAN
	pebble_x_position: INTEGER_32
	pebble_y_position: INTEGER_32
	pointer_position: EV_COORDINATE
	pointer_style: EV_POINTER_STYLE
	pointer_x: INTEGER_16
	pointer_y: INTEGER_16
	real_source: EV_DOCKABLE_SOURCE
	real_target: EV_DOCKABLE_TARGET
	resource_string_id (an_id: INTEGER_32): STRING_32
	return_current_if_next_tabstop_widget (start_widget: EV_WIDGET; search_pos: INTEGER_32; forwards: BOOLEAN): EV_WIDGET_IMP
	rubber_band_is_drawn: BOOLEAN
	screen_x: INTEGER_32
	screen_y: INTEGER_32
	source_being_docked: EV_DOCKABLE_SOURCE_I
	Start_widget_searched_cell: CELL [INTEGER_32]
	style: INTEGER_32
	system_directory: STRING_32
	tick_count: INTEGER_32
	top_level_window: EV_WINDOW
	transport_executing: BOOLEAN
	user_is_sensitive: BOOLEAN
	valid_key_code (a_code: INTEGER_32): BOOLEAN
	valid_wel_code (a_wel_code: INTEGER_32): BOOLEAN
	Vk_0: INTEGER_32
	Vk_1: INTEGER_32
	Vk_2: INTEGER_32
	Vk_3: INTEGER_32
	Vk_4: INTEGER_32
	Vk_5: INTEGER_32
	Vk_6: INTEGER_32
	Vk_7: INTEGER_32
	Vk_8: INTEGER_32
	Vk_9: INTEGER_32
	Vk_a: INTEGER_32
	Vk_add: INTEGER_32
	Vk_alt: INTEGER_32
	Vk_apps: INTEGER_32
	Vk_b: INTEGER_32
	Vk_back: INTEGER_32
	Vk_c: INTEGER_32
	Vk_cancel: INTEGER_32
	Vk_capital: INTEGER_32
	Vk_clear: INTEGER_32
	Vk_control: INTEGER_32
	Vk_d: INTEGER_32
	Vk_decimal: INTEGER_32
	Vk_delete: INTEGER_32
	Vk_divide: INTEGER_32
	Vk_down: INTEGER_32
	Vk_e: INTEGER_32
	Vk_end: INTEGER_32
	Vk_escape: INTEGER_32
	Vk_execute: INTEGER_32
	Vk_f: INTEGER_32
	Vk_f1: INTEGER_32
	Vk_f10: INTEGER_32
	Vk_f11: INTEGER_32
	Vk_f12: INTEGER_32
	Vk_f13: INTEGER_32
	Vk_f14: INTEGER_32
	Vk_f15: INTEGER_32
	Vk_f16: INTEGER_32
	Vk_f17: INTEGER_32
	Vk_f18: INTEGER_32
	Vk_f19: INTEGER_32
	Vk_f2: INTEGER_32
	Vk_f20: INTEGER_32
	Vk_f21: INTEGER_32
	Vk_f22: INTEGER_32
	Vk_f23: INTEGER_32
	Vk_f24: INTEGER_32
	Vk_f3: INTEGER_32
	Vk_f4: INTEGER_32
	Vk_f5: INTEGER_32
	Vk_f6: INTEGER_32
	Vk_f7: INTEGER_32
	Vk_f8: INTEGER_32
	Vk_f9: INTEGER_32
	Vk_g: INTEGER_32
	Vk_h: INTEGER_32
	Vk_help: INTEGER_32
	Vk_home: INTEGER_32
	Vk_i: INTEGER_32
	Vk_insert: INTEGER_32
	Vk_j: INTEGER_32
	Vk_k: INTEGER_32
	Vk_l: INTEGER_32
	Vk_lbutton: INTEGER_32
	Vk_lcontrol: INTEGER_32
	Vk_left: INTEGER_32
	Vk_lmenu: INTEGER_32
	Vk_lshift: INTEGER_32
	Vk_m: INTEGER_32
	Vk_mbutton: INTEGER_32
	Vk_menu: INTEGER_32
	Vk_multiply: INTEGER_32
	Vk_n: INTEGER_32
	Vk_next: INTEGER_32
	Vk_numlock: INTEGER_32
	Vk_numpad0: INTEGER_32
	Vk_numpad1: INTEGER_32
	Vk_numpad2: INTEGER_32
	Vk_numpad3: INTEGER_32
	Vk_numpad4: INTEGER_32
	Vk_numpad5: INTEGER_32
	Vk_numpad6: INTEGER_32
	Vk_numpad7: INTEGER_32
	Vk_numpad8: INTEGER_32
	Vk_numpad9: INTEGER_32
	Vk_o: INTEGER_32
	Vk_p: INTEGER_32
	Vk_pause: INTEGER_32
	Vk_print: INTEGER_32
	Vk_prior: INTEGER_32
	Vk_q: INTEGER_32
	Vk_r: INTEGER_32
	Vk_rbutton: INTEGER_32
	Vk_rcontrol: INTEGER_32
	Vk_return: INTEGER_32
	Vk_right: INTEGER_32
	Vk_rmenu: INTEGER_32
	Vk_rshift: INTEGER_32
	Vk_s: INTEGER_32
	Vk_scroll: INTEGER_32
	Vk_select: INTEGER_32
	Vk_separator: INTEGER_32
	Vk_shift: INTEGER_32
	Vk_snapshot: INTEGER_32
	Vk_space: INTEGER_32
	Vk_subtract: INTEGER_32
	Vk_t: INTEGER_32
	Vk_tab: INTEGER_32
	Vk_u: INTEGER_32
	Vk_up: INTEGER_32
	Vk_v: INTEGER_32
	Vk_w: INTEGER_32
	Vk_x: INTEGER_32
	Vk_y: INTEGER_32
	Vk_z: INTEGER_32
	wel_background_color: WEL_COLOR_REF
	wel_foreground_color: WEL_COLOR_REF
	wel_has_capture: BOOLEAN
	wel_height: INTEGER_32
	wel_item: POINTER
	wel_parent: WEL_WINDOW
	wel_width: INTEGER_32
	widget_imp_at_pointer_position: EV_WIDGET_IMP
	width: INTEGER_32
	window_of_item (hwnd: POINTER): WEL_WINDOW
	window_rect: WEL_RECT
	windows_directory: STRING_32
	x_position: INTEGER_32
	y_position: INTEGER_32

Commands
	check_drag_and_drop_release (a_x, a_y: INTEGER_32)
	check_dragable_release (a_x, a_y: INTEGER_32)
	close_dockable_dialog (dockable_dialog: EV_DOCKABLE_DIALOG)
	complete_dock
	cwin_show_window (hwnd: POINTER; cmd_show: INTEGER_32)
	destroy
	disable
	disable_capture
	disable_default_processing
	disable_dockable
	disable_external_docking
	disable_external_docking_relative
	disable_pebble_positioning
	disable_sensitive
	disable_transport
	dragable_motion (a_x, a_y, a_screen_x, a_screen_y: INTEGER_32)
	dragable_press (a_x, a_y, a_button, a_screen_x, a_screen_y: INTEGER_32)
	enable
	enable_capture
	enable_dockable
	enable_external_docking
	enable_external_docking_relative
	enable_pebble_positioning
	enable_sensitive
	enable_transport
	escape_pnd
	ev_set_minimum_height (value: INTEGER_32)
	ev_set_minimum_size (mw, mh: INTEGER_32)
	ev_set_minimum_width (value: INTEGER_32)
	hide
	hide_cursor
	internal_disable_dockable
	internal_enable_dockable
	internal_set_minimum_height (value: INTEGER_32)
	internal_set_minimum_size (mw, mh: INTEGER_32)
	internal_set_minimum_width (value: INTEGER_32)
	internal_set_size (mw, mh: INTEGER_32)
	invalidate
	message_beep_asterisk
	message_beep_exclamation
	message_beep_hand
	message_beep_ok
	message_beep_question
	on_size (size_type, a_width, a_height: INTEGER_32)
	output_debug_string (s: STRING_GENERAL)
	parent_ask_resize (a_width, a_height: INTEGER_32)
	pnd_motion (a_x, a_y, a_screen_x, a_screen_y: INTEGER_32)
	pnd_press (a_x, a_y, a_button, a_screen_x, a_screen_y: INTEGER_32)
	refresh_now
	release_capture
	remove_default_key_processing_handler
	remove_help_context
	remove_insert_label
	remove_insert_sep
	remove_pebble
	remove_real_source
	remove_real_target
	set_accept_cursor (a_cursor: [like accept_cursor] EV_POINTER_STYLE)
	set_actual_drop_target_agent (an_agent: [like actual_drop_target_agent] FUNCTION [ANY, TUPLE [INTEGER_32, INTEGER_32], EV_ABSTRACT_PICK_AND_DROPABLE])
	set_background_color (color: EV_COLOR)
	set_capture
	set_cursor_position_absolute (x, y: INTEGER_32)
	set_default_colors
	set_default_key_processing_handler (a_handler: [like default_key_processing_handler] PREDICATE [ANY, TUPLE [EV_KEY]])
	set_default_minimum_size
	set_deny_cursor (a_cursor: [like deny_cursor] EV_POINTER_STYLE)
	set_drag_and_drop_mode
	set_focus
	set_foreground_color (color: EV_COLOR)
	set_height (value: INTEGER_32)
	set_help_context (an_help_context: [like help_context] FUNCTION [ANY, TUPLE, EV_HELP_CONTEXT])
	set_message_return_value (v: POINTER)
	set_minimum_height (value: INTEGER_32)
	set_minimum_size (mw, mh: INTEGER_32)
	set_minimum_width (value: INTEGER_32)
	set_move_and_size (a_x_position, a_y_position, a_width, a_height: INTEGER_32)
	set_parent (par: EV_CONTAINER)
	set_pebble (a_pebble: [like pebble] ANY)
	set_pebble_function (a_function: FUNCTION [ANY, TUPLE, ANY])
	set_pebble_position (a_x, a_y: INTEGER_32)
	set_pick_and_drop_mode
	set_position (new_x_position, new_y_position: INTEGER_32)
	set_real_source (dockable_source: EV_DOCKABLE_SOURCE)
	set_real_target (a_target: EV_DOCKABLE_TARGET)
	set_size (w, h: INTEGER_32)
	set_style (a_style: INTEGER_32)
	set_target_menu_mode
	set_top_level_window_imp (a_window: EV_WINDOW_IMP)
	set_width (value: INTEGER_32)
	show
	show_cursor
	show_window (hwnd: POINTER; cmd_show: INTEGER_32)
	update
	user_disable_sensitive
	user_enable_sensitive
	wel_destroy
	wel_set_parent (a_parent: WEL_WINDOW)