// ★コメント未記入
#include "stdafx.h"

//#include "resource.h"
#include <stdio.h>
#include <io.h>
#include <time.h>

#include "dllInterface.h"
#include "ShitarabianPlugIn.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


CShitarabianPlugIn*		f_pPlugIn = NULL;

void DllImpAttach(
	CShitarabianPlugIn*		pPlugIn
)
{
	f_pPlugIn = pPlugIn;
}

#define	ATTACHCHECK if(!AttachCheck()){return(0);}

BOOL AttachCheck(
)
{
	static	BOOL	bFirst = TRUE;

	if ( bFirst )
	if( f_pPlugIn == NULL )
	{
		::AfxMessageBox("::DllImpAttach() する必要があります。");
		bFirst = FALSE;
		return( FALSE );
	};
	return( TRUE );
}


int WINAPI OnInitialize(
	void*		pDoc		// ドキュメントI/Fへのポインタ
)
{
	ATTACHCHECK
	f_pPlugIn->OnInitialize( (CDocumentIF*)pDoc );
	return( 0 );
}

int WINAPI OnDestroy(
	void*		pDoc		// ドキュメントI/Fへのポインタ
)
{
	ATTACHCHECK
	f_pPlugIn->OnDestroy( (CDocumentIF*)pDoc );
	return( 0 );
}

int WINAPI OnLoad(
	void*		pDoc		// ドキュメントI/Fへのポインタ
)
{
	ATTACHCHECK
	f_pPlugIn->OnLoad( (CDocumentIF*)pDoc );
	return( 0 );
}

int WINAPI OnSave(
	void*		pDoc		// ドキュメントI/Fへのポインタ
)
{
	ATTACHCHECK
	f_pPlugIn->OnSave( (CDocumentIF*)pDoc );
	return( 0 );
}

int WINAPI GetPlugInName(
	const char**		ppName		// 格納アドレスのポインタ
)
{
	ATTACHCHECK
	*ppName = f_pPlugIn->GetPlugInName();

	return( 0 );
}

int WINAPI OnDrawWall(
	void*		pDoc,		// ドキュメントI/Fへのポインタ
	HDC			hdcDst,		// 表示先DC
	long		left,		// 左端座標
	long		top,		// 上端座標
	long		width,		// X幅
	long		height		// Y幅
)
{
	ATTACHCHECK
	f_pPlugIn->OnDrawWall(
			(CDocumentIF*)pDoc,			// ドキュメントI/Fへのポインタ
			CDC::FromHandle( hdcDst ),	// 表示先DC
			left,						// 左端座標
			top,						// 上端座標
			width,						// X幅
			height						// Y幅
	);
	return( 0 );
}

int  WINAPI OnEdit(
	void*		pDoc		// ドキュメントI/Fへのポインタ
)
{
	ATTACHCHECK
	f_pPlugIn->OnEdit(
			(CDocumentIF*)pDoc		// ドキュメントI/Fへのポインタ
	);
	return( 0 );
}

int  WINAPI OnSetting(
	void*		pDoc		// ドキュメントI/Fへのポインタ
)
{
	ATTACHCHECK
	f_pPlugIn->OnSetting(
			(CDocumentIF*)pDoc		// ドキュメントI/Fへのポインタ
	);
	return( 0 );
}

int  WINAPI OnToolButton(
	void*		pDocIF,
	int			idxButton
)
{
	ATTACHCHECK
	f_pPlugIn->OnToolButton(
		(CDocumentIF*)pDocIF,
		idxButton
	);
	return( 0 );
}

int  WINAPI OnToolButtonUI(
	void*		pDocIF,
	int			idxButton,
	void*		pCmdUI
)
{
	ATTACHCHECK
	f_pPlugIn->OnToolButtonUI(
		(CDocumentIF*)pDocIF,
		idxButton,
		(CCmdUI*)pCmdUI
	);
	return( 0 );
}


int  WINAPI OnKeyDown(
	void*		pDocIF,
	UCHAR*		punKey,
	BOOL*		pbShift,
	BOOL*		pbCtrl,
	BOOL*		pbAlt
)
{
	ATTACHCHECK
	f_pPlugIn->OnKeyDown(
		(CDocumentIF*)pDocIF,
		punKey,
		pbShift,
		pbCtrl,
		pbAlt
	);
	return( 0 );
}


int  WINAPI OnChar(
	void*		pDocIF,
	CString*	pstrChar,
	BOOL*		pbShift,
	BOOL*		pbCtrl,
	BOOL*		pbAlt
)
{
	ATTACHCHECK
	f_pPlugIn->OnChar(
		(CDocumentIF*)pDocIF,
		pstrChar,
		pbShift,
		pbCtrl,
		pbAlt
	);
	return( 0 );
}



