callback.h

来自「单机版的‘三子棋’游戏」· C头文件 代码 · 共 71 行

H
71
字号
//Callback.h
/////////////////////////////////////////////////////////
#ifndef _CALLBACK_H_
#define _CALLBACK_H_
/////////////////////////////////////////////////////////
#ifndef IMPORTS
#define DLLENTRY extern "C" __declspec(dllexport)
#else
#define DLLENTRY extern "C" __declspec(dllimport)
#endif
/////////////////////////////////////////////////////////
enum STATIC_MODUAL
{
	DLL_MODUAL,
	EXE_MODUAL,
};
/////////////////////////////////////////////////////////
//声明回调函数
typedef (CALLBACK *CB_FUNCTION)(DWORD dwFuncID = 0);

#define szCB_SetCallbackFunc "CB_SetCallbackFunc"
typedef BOOL(_cdecl *SetCallbackFunc)(CB_FUNCTION cbFunc, DWORD dwFuncID = 0);

#define szCB_ExitApplication "CB_ExitApplication"
typedef BOOL(_cdecl *ExitApplication)(DWORD dwExitCode = 0);
/////////////////////////////////////////////////////////
BOOL CALLBACK CB_CloseWindow(DWORD dwFuncID = 0);
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
#ifdef _USRDLL
//接口函数
DLLENTRY BOOL CB_SetCallbackFunc(CB_FUNCTION cbFunc, DWORD dwFuncID = 0);
DLLENTRY BOOL CB_ExitApplication(DWORD dwExitCode = 0);
#endif

//全局函数
void CloseMainWindow(UINT nModual);
/////////////////////////////////////////////////////////
//
class CCallBackFuncImpl
{
public:
	HINSTANCE m_hLibInstance;	//加载 DLL 时获得的句柄

	CCallBackFuncImpl();
	~CCallBackFuncImpl();

	//初始化
	void InitLibInstance();

	//检查 DLL 文件是否存在
	BOOL CheckLibInstance(char *szDLLPathName);
	
private:
	//获取 DLL 函数的入口地址
	FARPROC GetLibInstance(const char *szProcName);

	//保存 DLL 文件的路径和名字
	char m_szDLLPathName[256];

public:
	BOOL SetCallbackFunction(CB_FUNCTION cbFunction, DWORD dwFuncID = 0);
	BOOL ExitInstance(DWORD dwExitCode = 0);

private:
	SetCallbackFunc m_pSetCallbackFunc;
	ExitApplication m_pExitApplication;
};

/////////////////////////////////////////////////////////
#endif //_CALLBACK_H_

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?