/*!
 	@file
 	@brief Win32 用メッセージプロシージャ
 */


#ifndef CMessageHookManager_h
#define CMessageHookManager_h

#include"../../Setup/CompileMode.h"
#include"../../Setup/Win32.h"
#include"../../Auxiliary/Macro.h"
#include"CMessageHook.h"

#include<map>
#include<list>

namespace Maid
{
	class CMessageHookManager
	{
	public:
		CMessageHookManager();

		void AddHook( IMessageHook* pHook, HWND hWnd );
		void DelHook( IMessageHook* pHook, HWND hWnd );

		static CMessageHookManager* GetInstance();


		LRESULT CALLBACK OnMessage( CWindowsMessage& mess );

	private:
		typedef MySTL::list<IMessageHook*> HOOKLIST;
		MySTL::map<HWND,HOOKLIST>	m_ProcMap;		//	各ハンドルごとのフックリスト
		HOOKLIST					m_GlobalProc;	//	すべてに割り込むフックリスト
	};

}

#endif
