note
	description: "Contains information for tracking mouse events."
	legal: "See notice at end of class."
	status: "See notice at end of class."
	date: "$Date$"
	revision: "$Revision$"

class
	WEL_TRACK_MOUSE_EVENT

inherit
	WEL_STRUCTURE
		rename
			make as structure_make,
			make_by_pointer as structure_make_by_pointer
		end

create
	make,
	make_by_pointer

feature {NONE} -- Initialization

	make
			-- Create TRACKMOUSEEVENT struct.
		do
			structure_make
			cwel_trackmouseevent_set_cbsize (item, structure_size)
		end

	make_by_pointer (a_pointer: POINTER)
			-- Create TRACKMOUSEEVENT from `a_pointer'.
		do
			structure_make_by_pointer (a_pointer)
			cwel_trackmouseevent_set_cbsize (item, structure_size)
		end

feature -- Access

	dwflags: INTEGER
				-- Requested tracking service.
		do
			Result := cwel_trackmouseevent_get_dwflags (item)
		end

	hwndtrack: POINTER
			-- Window to track.
		do
			Result := cwel_trackmouseevent_get_hwndtrack (item)
		ensure
			Result_not_null: Result /= default_pointer
		end

	dwhovertime: INTEGER
			-- Hover time-out.
		do
			Result := cwel_trackmouseevent_get_dwhovertime (item)
		end

	structure_size: INTEGER
			-- Size to allocate (in bytes)
		once
			Result := c_size_of_trackmouseevent
		end

feature -- Status setting

	set_dwflags (flags: INTEGER)
			-- Assign `flags' to `dwflags'.
		do
			cwel_trackmouseevent_set_dwflags (item, flags)
		ensure
			dwflags_set: dwflags = flags
		end

	set_hwndtrack (window: POINTER)
			-- Assign `window' to `hwndtrack'.
		do
			cwel_trackmouseevent_set_hwndtrack (item, window)
		ensure
			hwndtrack_set: hwndtrack = window
		end

	set_dwhovertime (time: INTEGER)
			-- Assign `time' to `dwhovertime'.
		do
			cwel_trackmouseevent_set_dwhovertime (item, time)
		ensure
			dwhovertime_set: dwhovertime = time 
		end

feature {NONE} -- Externals

	c_size_of_trackmouseevent: INTEGER
		external
			"C [macro %"trackmouseevent.h%"]"
		alias
			"sizeof (TRACKMOUSEEVENT)"
		end

	cwel_trackmouseevent_get_cbsize (ptr: POINTER): INTEGER
		external
			"C [macro %"trackmouseevent.h%"] (TRACKMOUSEEVENT*): EIF_INTEGER"
		end

	cwel_trackmouseevent_get_hwndtrack (ptr: POINTER): POINTER
		external
			"C [macro %"trackmouseevent.h%"] (TRACKMOUSEEVENT*): EIF_POINTER"
		end

	cwel_trackmouseevent_get_dwflags (ptr: POINTER): INTEGER
		external
			"C [macro %"trackmouseevent.h%"] (TRACKMOUSEEVENT*): EIF_INTEGER"
		end

	cwel_trackmouseevent_get_dwhovertime (ptr: POINTER): INTEGER
		external
			"C [macro %"trackmouseevent.h%"] (TRACKMOUSEEVENT*): EIF_INTEGER"
		end

	cwel_trackmouseevent_set_cbsize (ptr: POINTER; value: INTEGER)
		external
			"C [macro %"trackmouseevent.h%"] (TRACKMOUSEEVENT*, DWORD)"
		end

	cwel_trackmouseevent_set_hwndtrack (ptr, window: POINTER)
		external
			"C [macro %"trackmouseevent.h%"] (TRACKMOUSEEVENT*, HWND)"
		end

	cwel_trackmouseevent_set_dwflags (ptr: POINTER; value: INTEGER)
		external
			"C [macro %"trackmouseevent.h%"] (TRACKMOUSEEVENT*, DWORD)" 
		end

	cwel_trackmouseevent_set_dwhovertime (ptr: POINTER; value: INTEGER)
		external
			"C [macro %"trackmouseevent.h%"] (TRACKMOUSEEVENT*, DWORD)" 
		end

note
	copyright:	"Copyright (c) 1984-2006, Eiffel Software and others"
	license:	"Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
	source: "[
			 Eiffel Software
			 356 Storke Road, Goleta, CA 93117 USA
			 Telephone 805-685-1006, Fax 805-685-6869
			 Website http://www.eiffel.com
			 Customer support http://support.eiffel.com
		]"

end