#include"CMessageHook.h"
#include"CMessageHookManager.h"


namespace Maid
{

/*!
 	@class	IMessageHook CMessageHook.h
 	@brief	Win32 用メッセージプロシージャ
 			メッセージ処理はすべてこのクラスを継承して実装します
 */

/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
//! コンストラクタ
/*!
 */
IMessageHook::IMessageHook()
{
	m_IsHook = false;
	m_hWnd   = NULL;
}


/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
//! デストラクタ
/*!
 */
IMessageHook::~IMessageHook()
{
	DelProc();
}

/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
//! プロシージャにコールバックしてもらうようにする
/*!
 *	\param	hWnd	[i ]	登録する場所
 */
void IMessageHook::AddProc( HWND hWnd )
{
	CMessageHookManager::GetInstance()->AddHook( this, hWnd );
	m_hWnd   = hWnd;
	m_IsHook = true;
}

/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
//! プロシージャにコールバックをやめてもらう
/*!
 */
void IMessageHook::DelProc()
{
	if( m_IsHook )
	{
		CMessageHookManager::GetInstance()->DelHook( this, m_hWnd );
		m_hWnd   = NULL;
		m_IsHook = false;
	}
}

}