/*!
 	@file
 	@brief マウスドライバ（プロシージャ で取得する Ver. )
 */

#ifndef CMouseDriverWindowsMSG_h
#define CMouseDriverWindowsMSG_h

#include"../../../../Setup/CompileMode.h"
#include"../../../../Setup/Win32.h"
#include"../../../../FrameWork/Windows/CMessageHook.h"
#include"../../CMouseDriver.h"
#include<vector>

namespace Maid
{
	class CMouseDriverWindowsMSG : public IMessageHook, public IMouseDriver
	{
	public:
		CMouseDriverWindowsMSG( HWND hWnd );
		virtual ~CMouseDriverWindowsMSG();

		virtual void	Initialize();
		virtual void	Finalize();
		virtual void	GetState( MySTL::vector<int>& PosList, MySTL::vector<bool>& KeyList ) const;
		virtual int		GetPositionMax()								const;
		virtual int		GetButtonMax()									const;

		virtual void SetDrawHardWareCursor( bool IsShow );
		virtual bool IsCursorShow() const;

		virtual RETURNCODE OnMessage( CWindowsMessage& mess );

	private:
		MySTL::vector<int>	m_Position;
		MySTL::vector<bool>	m_IsDown;
		HWND				m_hWnd;

		int		m_ShowCount;
	};
}

#endif