// ★コメント未記入

#ifndef DLLINTERFACE_H
#define DLLINTERFACE_H

//---------------------------------------------------------------------------
// バージョン情報類
#define		API_VERSION		"0000"

// プラグインはロード時最初にこの関数を呼ぶ必要があります。
class CShitarabianPlugIn;
extern void DllImpAttach(
	CShitarabianPlugIn*		pPlugIn
);

//---------------------------------------------------------------------------
// プラグインI/F

#ifdef	_EXE_IMPLIMENT_


// 
typedef int(WINAPI *ONINITIALIZE)(
		void*				// ドキュメントI/Fへのポインタ
);
typedef int(WINAPI *ONDESTROY)(
		void*				// ドキュメントI/Fへのポインタ
);

// 
typedef int(WINAPI *ONLOAD)(
		void*				// ドキュメントI/Fへのポインタ
);
typedef int(WINAPI *ONSAVE)(
		void*				// ドキュメントI/Fへのポインタ
);

// 名称取得
typedef int(WINAPI *GETPLUGINNAME)(
		const char**		// 格納アドレスのポインタ
);


// 壁紙表示ハンドラ
typedef int(WINAPI *ONDRAWWALL)(
		void*,				// ドキュメントI/Fへのポインタ
		HDC,				// 表示先DC
		long,				// 左端座標
		long,				// 上端座標
		long,				// X幅
		long				// Y幅
);

// 壁紙表示ハンドラ
typedef int(WINAPI *ONEDIT)(
		void*				// ドキュメントI/Fへのポインタ
);

// 設定ダイアログ表示ハンドラ
typedef int(WINAPI *ONSETTING)(
		void*				// ドキュメントI/Fへのポインタ
);


// ツールボタン処理ハンドラ
typedef int (WINAPI *ONTOOLBUTTON)(
		void*,				// ドキュメントI/Fへのポインタ
		int					// ボタンの番号
);
typedef int (WINAPI *ONTOOLBUTTONUI)(
		void*,				// ドキュメントI/Fへのポインタ
		int,					// ボタンの番号
		void*				// CmdUIのポインタ
);

// キー押下ハンドラ
typedef int(WINAPI *ONKEYDOWN)(
	void*,				// ドキュメントI/Fへのポインタ
	UCHAR*,
	BOOL*,
	BOOL*,
	BOOL*
);

typedef int(WINAPI *ONCHAR)(
	void*,				// ドキュメントI/Fへのポインタ
	CString*,
	BOOL*,
	BOOL*,
	BOOL*
);

#else// _EXE_IMPLIMENT_
extern "C"{

    int __declspec(dllexport) WINAPI OnInitialize(
		void*			pDoc		// ドキュメントI/Fへのポインタ
	);

    int __declspec(dllexport) WINAPI OnDestroy(
		void*			pDoc		// ドキュメントI/Fへのポインタ
	);

    int __declspec(dllexport) WINAPI OnLoad(
		void*			pDoc		// ドキュメントI/Fへのポインタ
	);

    int __declspec(dllexport) WINAPI OnSave(
		void*			pDoc		// ドキュメントI/Fへのポインタ
	);

    int __declspec(dllexport) WINAPI GetPlugInName(
		const char**	ppName		// 格納アドレスのポインタ
	);

    int __declspec(dllexport) WINAPI OnDrawWall(
		void*			pDoc,		// ドキュメントI/Fへのポインタ
		HDC				hdcDst,		// 表示先DC
		long			left,		// 左端座標
		long			top,		// 上端座標
		long			width,		// X幅
		long			height		// Y幅
	);

    int __declspec(dllexport) WINAPI OnEdit(
		void*			pDoc		// ドキュメントI/Fへのポインタ
	);

    int __declspec(dllexport) WINAPI OnSetting(
		void*			pDoc		// ドキュメントI/Fへのポインタ
	);

	int __declspec(dllexport) WINAPI OnToolButton(
		void*			pDocIF,
		int				idxButton	// ボタンの番号
	);
	int __declspec(dllexport) WINAPI OnToolButtonUI(
		void*			pDocIF,
		int				idxButton,	// ボタンの番号
		void*			pCmdUI
	);

    int __declspec(dllexport) WINAPI OnKeyDown(
		void*			pDocIF,
		UCHAR*			punKey,
		BOOL*			pbShift,
		BOOL*			pbCtrl,
		BOOL*			pbAlt
	);

    int __declspec(dllexport) WINAPI OnChar(
		void*			pDocIF,
		CString*		pstrChar,
		BOOL*			pbShift,
		BOOL*			pbCtrl,
		BOOL*			pbAlt
	);

}
#endif// _EXE_IMPLIMENT_
#endif// DLLINTERFACE_H