⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lib.h

📁 中文编程语言——易语言(可视化编程
💻 H
📖 第 1 页 / 共 3 页
字号:

/*/////////////*/
// 支持库可以通知易编辑环境(IDE)或易运行环境(RUNTIME)的码值:

struct MDATA
{
	MDATA ()
	{
		m_pData = NULL;
		m_nDataSize = 0;
	}

	LPBYTE	m_pData;
	INT		m_nDataSize;
};
typedef MDATA* PMDATA;

struct EVENT_NOTIFY
{
	// 记录事件的来源
	DWORD	m_dwFormID;		// 调用ITF_CREATE_UNIT接口所传递过来的所处窗口ID(dwWinFormID参数)
	DWORD	m_dwUnitID;		// 调用ITF_CREATE_UNIT接口所传递过来的窗口单元ID(dwUnitID参数)
	INT		m_nEventIndex;	//   事件索引(在窗口单元定义信息LIB_DATA_TYPE_INFO中m_pPropertyBegin
                            // 成员中的位置)

	INT		m_nArgCount;		// 本事件所传递的参数数目,最多 5 个。
	INT		m_nArgValue [5];	// 记录各参数值,SDT_BOOL 型参数值为 1 或 0。

    //!!! 注意下面两个成员在没有定义返回值的事件中无效,其值可能为任意值。
	BOOL	m_blHasReturnValue; // 用户事件处理子程序处理完毕事件后是否提供了返回值。
	INT		m_nReturnValue; // 用户事件处理子程序处理完毕事件后的返回值,逻辑值用数值 0(假) 和 1(真) 返回。

    /////////////////////////////////////

	EVENT_NOTIFY (DWORD dwFormID, DWORD dwUnitID, INT nEventIndex)
	{
		m_dwFormID = dwFormID;
		m_dwUnitID = dwUnitID;
		m_nEventIndex = nEventIndex;

		m_nArgCount = 0;
		m_blHasReturnValue = FALSE;
		m_nReturnValue = 0;
	}
};
typedef EVENT_NOTIFY* PEVENT_NOTIFY;

/*///////////////////////*/

// NES_ 宏为仅被易编辑环境(IDE)处理的通知。
#define NES_GET_MAIN_HWND			        1
	// 取易编辑环境主窗口的句柄,可以在支持库的AddIn函数中使用。
#define	NES_RUN_FUNC				        2
	// 通知易编辑环境运行指定的功能,返回一个BOOL值。
	// dwParam1为功能号。
	// dwParam2为一个双DWORD数组指针,分别提供功能参数1和2。

// NAS_ 宏为既被易编辑环境又被易运行环境处理的通知。
#define NAS_GET_LIB_DATA_TYPE_INFO          1002
    // 返回指定库定义数据类型的PLIB_DATA_TYPE_INFO定义信息指针。
    // dwParam1为欲获取信息的数据类型DATA_TYPE。
    // 如果该数据类型无效或者不为库定义数据类型,则返回NULL,否则返回PLIB_DATA_TYPE_INFO指针。

// NRS_ 宏为仅能被易运行环境处理的通知。
#define NRS_UNIT_DESTROIED			        2000
	// 通知系统指定的单元已经被销毁。
	// dwParam1为dwFormID
	// dwParam2为dwUnitID
#define NRS_CONVERT_NUM_TO_INT              2001
	// 转换其它数值格式到整数。
	// dwParam1为 PMDATA_INF 指针,其 m_dtDataType 必须为数值型。
    // 返回转换后的整数值。
#define NRS_GET_CMD_LINE_STR			    2002
	// 取当前命令行文本
	// 返回命令行文本指针,有可能为空串。
#define NRS_GET_EXE_PATH_STR                2003
	// 取当前执行文件所处目录名称
	// 返回当前执行文件所处目录文本指针。
#define NRS_GET_EXE_NAME				    2004
	// 取当前执行文件名称
	// 返回当前执行文件名称文本指针。
#define NRS_GET_UNIT_PTR				    2006
	// 取单元对象指针
	// dwParam1为WinForm的ID
	// dwParam2为WinUnit的ID
	// 成功返回有效的单元对象CWnd*指针,失败返回NULL。
#define NRS_GET_AND_CHECK_UNIT_PTR			2007
	// 取单元对象指针
	// dwParam1为WinForm的ID
	// dwParam2为WinUnit的ID
	// 成功返回有效的单元对象CWnd*指针,失败自动报告运行时错误并立即退出程序。
#define NRS_EVENT_NOTIFY				    2008
	// 通知系统产生了事件。
	// dwParam1为PEVENT_NOTIFY指针。
	//   如果返回 0 ,表示此事件已被系统抛弃,否则表示系统已经成功传递此事件到用户
	// 事件处理子程序。
#define NRS_STOP_PROCESS_EVENT_NOTIFY	    2009
	// 通知系统暂停处理事件通知。
#define NRS_CONTINUE_PROCESS_EVENT_NOTIFY	2010
	// 通知系统继续处理事件通知。
#define	NRS_DO_EVENTS			            2018
	// 通知Windows系统处理所有已有事件。
#define NRS_GET_UNIT_DATA_TYPE              2022
	// dwParam1为WinForm的ID
	// dwParam2为WinUnit的ID
	// 成功返回有效的 DATA_TYPE ,失败返回 0 。
#define NRS_FREE_ARY                        2023
    // 释放指定数组数据。
    // dwParam1为该数据的DATA_TYPE,只能为系统基本数据类型。
    // dwParam2为指向该数组数据的指针。
#define NRS_MALLOC                          2024
    // 分配指定空间的内存,所有与易程序交互的内存都必须使用本通知分配。
    //   dwParam1为欲需求内存字节数。
    //   dwParam2如为0,则如果分配失败就自动报告运行时错并退出程序。
    // 如不为0,则如果分配失败就返回NULL。
    //   返回所分配内存的首地址。
#define NRS_MFREE                           2025
    // 释放已分配的指定内存。
    // dwParam1为欲释放内存的首地址。
#define NRS_MREALLOC                        2026
    // 重新分配内存。
    //   dwParam1为欲重新分配内存尺寸的首地址。
    //   dwParam2为欲重新分配的内存字节数。
    // 返回所重新分配内存的首地址,失败自动报告运行时错并退出程序。
#define	NRS_RUNTIME_ERR			            2027
	// 通知系统已经产生运行时错误。
	// dwParam1为char*指针,说明错误文本。
#define	NRS_EXIT_PROGRAM                    2028
	// 通知系统退出用户程序。
	// dwParam1为退出代码,该代码将被返回到操作系统。
#define NRS_GET_PRG_TYPE                    2030
    // 返回当前用户程序的类型,为2(调试版)或3(发布版)。

/*///////////////////////////////////////////////////////////////////*/
// 易编辑环境(IDE)或易运行环境(RUNTIME)可以通知支持库的码值:
#define	NL_SYS_NOTIFY_FUNCTION		1
	//   告知支持库通知系统用的函数指针,在装载支持库前通知,可能有多次,
	// 后通知的值应该覆盖前面所通知的值),忽略返回值。
	//   库可将此函数指针记录下来以便在需要时使用它通知信息到系统。
	//   dwParam1: (PFN_NOTIFY_SYS)


/*///////////////////////////////////////////////////////////////////*/

#define NR_OK		0
#define NR_ERR		-1
typedef INT (WINAPI *PFN_NOTIFY_LIB) (INT nMsg, DWORD dwParam1 = 0, DWORD dwParam2 = 0);
	// 此函数用作易编辑环境(IDE)或易运行环境(RUNTIME)通知支持库有关事件。
typedef INT (WINAPI *PFN_NOTIFY_SYS) (INT nMsg, DWORD dwParam1 = 0, DWORD dwParam2 = 0);
	// 此函数用作库通知易编辑环境(IDE)或易运行环境(RUNTIME)有关事件。

/* 所有命令和方法实现函数的原型。
   1、必须是 CDECL 调用方式;
   2、pRetData 用作返回数据;
   3、!!!如果指定库命令返回数据类型不为 _SDT_ALL ,可以
      不填充 pRetData->m_dtDataType,如果为 _SDT_ALL ,则必须填写;
   4、pArgInf 提供参数数据本身,所指向的 MDATA_INF 记录每个输入参数,数目等同于 nArgCount 。*/
typedef void (*PFN_EXECUTE_CMD) (PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf);
// 运行支持库中ADDIN功能的函数
typedef INT (WINAPI *PFN_RUN_ADDIN_FN) (INT nAddInFnIndex);
// 创建库中提供的超级模板程序的函数
typedef INT (WINAPI *PFN_SUPER_TEMPLATE) (INT nTemplateIndex);

////////////////////////////////////////////////////

#define		LIB_FORMAT_VER		20000101	// 库格式号

/*	!!! 注意:支持库文件名的后缀必须固定为.FNx,其中x为一类型字母,目前有意义的后缀有:
	1、“.fne”:	带编辑信息、有运行支持代码的支持库;
	2、“.fnl”:	带编辑信息、无运行支持代码的支持库;
	3、“.fnr”:	不带编辑和声明信息、仅有运行支持代码的支持库;
*/

typedef struct
{
	DWORD				m_dwLibFormatVer;
		// 库格式号,应该等于LIB_FORMAT_VER。

	LPTSTR				m_szGuid;
		// 对应于本库的唯一GUID串,不能为NULL或空,相同库的所有后续版本此串都应相同。
        // 注意此 GUID 文本必须使用专用工具软件(如随本文档附带的guidgen.exe)生成,以防止出现重复。

	INT					m_nMajorVersion;	// 本库的主版本号,必须大于0。
	INT					m_nMinorVersion;	// 本库的次版本号。

	INT					m_nBuildNumber;
		// 构建版本号。
		//   本版本号仅用作区分相同正式版本号的系统软件(譬如仅仅修改了几个 BUG,
		// 不值得升级正式版本的系统软件)。任何公布过给用户使用的版本其构建版本
		// 号都应该不一样。
		//   赋值时应该顺序递增。

	INT					m_nRqSysMajorVer;		// 所需要易语言系统的主版本号,目前应该为 3 。
	INT					m_nRqSysMinorVer;		// 所需要易语言系统的次版本号,目前应该为 0 。
	INT					m_nRqSysKrnlLibMajorVer;	// 所需要的系统核心支持库的主版本号,目前应该为 3 。
	INT					m_nRqSysKrnlLibMinorVer;	// 所需要的系统核心支持库的次版本号,目前应该为 0 。

	LPTSTR				m_szName;		// 库名,不能为NULL或空。
    // 语言类别宏
    #define LT_CHINESE  1
    #define LT_ENGLISH  2
	INT					m_nLanguage;	// 本库所支持的语言,目前应该为 LT_CHINESE 。
	LPTSTR				m_szExplain;	// 有关本库的详细解释

	#define		LBS_FUNC_NO_RUN_CODE		(1 << 2)
		// 本库仅为声明库,没有对应功能的支持代码,因此不能运行。
	#define		LBS_NO_EDIT_INFO			(1 << 3)
		// 本库内无供编辑用的信息(编辑信息主要为:各种名称、解释字符串等),无法被易语言IDE加载。
	DWORD				m_dwState;

//////////////////  有关本库作者的信息。
	LPTSTR				m_szAuthor;
	LPTSTR				m_szZipCode;
	LPTSTR				m_szAddress;
	LPTSTR				m_szPhoto;
	LPTSTR				m_szFax;
	LPTSTR				m_szEmail;
	LPTSTR				m_szHomePage;
	LPTSTR				m_szOther;

//////////////////
	INT                 m_nDataTypeCount;	// 本库中自定义数据类型的数目,必须等于m_pDataType所指向数组成员的数目。
	PLIB_DATA_TYPE_INFO m_pDataType;		// 本库中所有自定义数据类型的定义信息。

	INT					m_nCategoryCount;	// 全局命令类别数目,必须等同于下面m_szzCategory成员所实际提供的数目。
	LPTSTR				m_szzCategory;		// 全局命令类别说明表,每项为一字符串,前四位数字表示图象索引号(从1开始,0表示无)。
                                            // 减一后的值为指向支持库中名为"LIB_BITMAP"的BITMAP资源中某一部分16X13位图的索引。

	INT					m_nCmdCount;        // 本库中提供的所有命令(全局命令及对象方法)的数目(如无则为0)。
	PCMD_INFO			m_pBeginCmdInfo;	// 指向所有命令及方法的定义信息数组(如m_nCmdCount为0,则为NULL)。
	PFN_EXECUTE_CMD*    m_pCmdsFunc;		// 指向每个命令的实现代码首地址,(如m_nCmdCount为0,则为NULL)。

	PFN_RUN_ADDIN_FN	m_pfnRunAddInFn;	// 可为NULL,用作为易语言IDE提供附加功能。
	//     有关AddIn功能的说明,两个字符串说明一个功能。第一个为功能名称
	// (限20字符),第二个为功能详细介绍(限60字符),最后由两个空串结束。
	LPTSTR				m_szzAddInFnInfo;

	PFN_NOTIFY_LIB		m_pfnNotify;		// 不能为NULL,提供接收来自易语言IDE或运行环境通知信息的函数。

    // 超级模板暂时保留不用。
	PFN_SUPER_TEMPLATE	m_pfnSuperTemplate;	// 为NULL
	LPTSTR m_szzSuperTemplateInfo;	// 为NULL

	// 本库定义的所有常量。
	INT	m_nLibConstCount;   // 常量数目。
	PLIB_CONST_INFO m_pLibConst;    // 指向常量定义数组。

	LPTSTR m_szzDependFiles;	// 可为NULL
	    // 本库正常运行所需要依赖的其他文件,在制作安装软件时将会自动带上这些文件。
}
LIB_INFO, *PLIB_INFO;

/*////////////////////////////////////////////*/

#define	FUNCNAME_GET_LIB_INFO		"GetNewInf"     // 取本支持库的PLIB_INFO指针的输出函数名称
typedef PLIB_INFO (WINAPI *PFN_GET_LIB_INFO) ();	// GetNewInf的函数原型
typedef INT (*PFN_ADD_IN_FUNC) ();  // m_pfnRunAddInFn的函数原型

/*////////////////////////////////////////////*/

#define LIB_BMP_RESOURCE	"LIB_BITMAP"	    // 支持库中提供的图像资源的名称
#define LIB_BMP_CX			16					// 每一图像资源的宽度
#define LIB_BMP_CY			13					// 每一图像资源的高度
#define LIB_BMP_BKCOLOR		RGB(255, 255, 255)	// 图像资源的底色

//////////////////////////// 运行时所使用的宏

#define	WU_GET_WND_PTR			(WM_APP + 2)	// 用作支持窗口单元事件反馈。
#define	WU_SIZE_CHANGED			(WM_APP + 3)	// 用作在窗口尺寸改变后通知所有条状窗口单元。
#define	WU_PARENT_RELAYOUT_BAR	(WM_APP + 4)	//   用作通知顶层窗口重新布局所有的 bar 单元,
                                                // 通常在 bar 单元改变了自身尺寸后使用。

#endif

⌨️ 快捷键说明

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