
#include"CCharCodeDriverWindows.h"
#include"../../../Auxiliary/CString.h"

using namespace Maid;


/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
//! 文字コードドライバの初期化
/*!
 	引数などは ICharCodeDriver::Initialize を参照すること
 */
void CCharCodeDriverWindows::Initialize()
{
	AddProc( NULL );
}

/*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
//! 文字コードドライバの解放
/*!
 *	引数などは ICharCodeDriver::Finalize を参照すること
 */
void CCharCodeDriverWindows::Finalize()
{

}

void CCharCodeDriverWindows::SetCallBack( const CHARCODEFUNCTION& Function )
{
	m_Function = Function;
}

IMessageHook::RETURNCODE CCharCodeDriverWindows::OnMessage( CWindowsMessage& Param )
{
	const UINT	 msg = Param.GetMSG();
	const WPARAM wParam = Param.GetWPARAM();
	const LPARAM lParam = Param.GetLPARAM();


	switch( msg )
	{
	case WM_CHAR:
		{
			if( !m_Function ) { break; }
//			m_Function( CString::ConvertSJIStoMAID( (unt32)wParam ) );
			//	そのままで大丈夫・・・なはず
			const char k = (char)wParam;
			m_Function( (unt32)wParam );
		}break;
	}

	return IMessageHook::RETURNCODE_CONTINUE;
}


