📄 elibtypes.pas
字号:
// 通知用数据结构。
// 支持库可以通知易编辑环境(IDE)或易运行环境(RUNTIME)的码值:
PMDATA = ^MDATA;
MDATA = record // 初始值:m_pData=nil; m_nDataSize=0;
m_pData : PByte;
m_nDataSize : Integer;
end;
// 记录事件的来源
PEVENT_NOTIFY = ^EVENT_NOTIFY;
EVENT_NOTIFY = class // 记录事件的来源
m_dwFormID : LongWord; // 调用ITF_CREATE_UNIT接口所传递过来的所处窗口ID(dwWinFormID参数)
m_dwUnitID : Longword; // 调用ITF_CREATE_UNIT接口所传递过来的窗口单元ID(dwUnitID参数)
m_nEventIndex : Integer; // 事件索引(在窗口单元定义信息LIB_DATA_TYPE_INFO中m_pPropertyBegin成员中的位置)
m_nArgCount : Integer; // 本事件所传递的参数数目,最多 5 个。
m_nArgValue : array[0..4] of Integer; // 记录各参数值,SDT_BOOL型参数值为 1 或 0。
//!!! 注意下面两个成员在没有定义返回值的事件中无效,其值可能为任意值。
m_blHasReturnValue : LongBool; // 用户事件处理子程序处理完毕事件后是否提供了返回值。
m_nReturnValue : Integer; // 用户事件处理子程序处理完毕事件后的返回值,逻辑值用数值 0(假) 和 1(真) 返回。
procedure EVENT_NOTIFY(dwFormID,dwUnitID : LongWord; nEventIndex:Integer);
end;
const
//////////////////////////////////////////////////////////////////////////////
// 消息常量定义 (消息号)
// NES_ 开头的常量为仅被易编辑环境(IDE)处理的通知(消息号)。[NES: Notify_Editable_System]
NES_GET_MAIN_HWND = 1; // 取易编辑环境主窗口的句柄,可以在支持库的AddIn函数中使用。
NES_RUN_FUNC = 2; // 通知易编辑环境运行指定的功能,返回一个BOOL值。dwParam1为功能号;dwParam2为一个双DWORD数组指针,分别提供功能参数1和2。
// NAS_ 开头的常量为既被易编辑环境又被易运行环境处理的通知(消息号)。[NAS: Notify_All_System]
NAS_GET_LIB_DATA_TYPE_INFO = 1002; //返回指定库定义数据类型的pLIB_DATA_TYPE_INFO定义信息指针。dwParam1为欲获取信息的数据类型DATA_TYPE;如果该数据类型无效或者不为库定义数据类型,则返回nil,否则返回pLIB_DATA_TYPE_INFO指针。
// NRS_ 开头的常量为仅能被易运行环境处理的通知(消息号)。[NRS: Notify_Runtime_System]
NRS_UNIT_DESTROIED = 2000; // 通知系统指定的单元已经被销毁。dwParam1为dwFormID;dwParam2为dwUnitID;
NRS_CONVERT_NUM_TO_INT = 2001; // 转换其它数值格式到整数。dwParam1为pMDATA_INF指针,其m_dtDataType必须为数值型。返回转换后的整数值。
NRS_GET_CMD_LINE_STR = 2002; // 取当前命令行文本,返回命令行文本指针,有可能为空串。
NRS_GET_EXE_PATH_STR = 2003; // 取当前执行文件所处目录名称,返回当前执行文件所处目录文本指针。
NRS_GET_EXE_NAME = 2004; // 取当前执行文件名称,返回当前执行文件名称文本指针。
NRS_GET_UNIT_PTR = 2006; // 取单元对象指针。dwParam1为WinForm的ID;dwParam2为WinUnit的ID。成功返回有效的单元对象CWnd*指针,失败返回nil。
NRS_GET_AND_CHECK_UNIT_PTR = 2007; // 取单元对象指针,并检查该指针。dwParam1为WinForm的ID;dwParam2为WinUnit的ID。成功返回有效的单元对象CWnd*指针,失败自动报告运行时错误并立即退出程序。
NRS_EVENT_NOTIFY = 2008; // 通知系统产生了事件。dwParam1为PEVENT_NOTIFY指针。如果返回0,表示此事件已被系统抛弃,否则表示系统已经成功传递此事件到用户事件处理子程序。
NRS_STOP_PROCESS_EVENT_NOTIFY = 2009; // 通知系统暂停处理事件通知。
NRS_CONTINUE_PROCESS_EVENT_NOTIFY = 2010; // 通知系统继续处理事件通知。
NRS_DO_EVENTS = 2018; // 通知Windows系统处理所有已有事件。
NRS_GET_UNIT_DATA_TYPE = 2022; // 取单元数据类型。dwParam1为WinForm的ID;dwParam2为WinUnit的ID。成功返回有效的DATA_TYPE,失败返回0。
NRS_FREE_ARY = 2023; // 释放指定数组数据。dwParam1为该数据的DATA_TYPE,只能为系统基本数据类型;dwParam2为指向该数组数据的指针。
NRS_MALLOC = 2024; // 分配指定空间的内存,所有与易程序交互的内存都必须使用本通知分配。dwParam1为欲需求内存字节数。dwParam2如为0,则如果分配失败就自动报告运行时错并退出程序,如不为0,则如果分配失败就返回nil。返回所分配内存的首地址。
NRS_MFREE = 2025; // 释放已分配的指定内存。dwParam1为欲释放内存的首地址。
NRS_MREALLOC = 2026; // 重新分配内存。dwParam1为欲重新分配内存尺寸的首地址;dwParam2为欲重新分配的内存字节数。返回所重新分配内存的首地址,失败自动报告运行时错并退出程序。
NRS_RUNTIME_ERR = 2027; // 通知系统已经产生运行时错误。dwParam1为char*指针,说明错误文本。
NRS_EXIT_PROGRAM = 2028; // 通知系统退出用户程序。dwParam1为退出代码,该代码将被返回到操作系统。
NRS_GET_PRG_TYPE = 2030; // 返回当前用户程序的类型,为2(调试版)或3(发布版)。
//////////////////////////////////////////////////////////////////////////////
// 易编辑环境(IDE)或易运行环境(RUNTIME)可以通知支持库的码值(消息号):
NL_SYS_NOTIFY_FUNCTION = 1;
// 告知支持库通知系统用的函数指针,在装载支持库前通知,可能有多次,
// (后通知的值应该覆盖前面所通知的值),忽略返回值。
// 库可将此函数指针记录下来以便在需要时使用它通知信息到系统。
// dwParam1: (PFN_NOTIFY_SYS)
//////////////////////////////////////////////////////////////////////////////
const
NR_OK = 0;
NR_ERR = -1;
type
// 此函数用作易编辑环境(IDE)或易运行环境(RUNTIME)通知支持库有关事件。
pFN_NOTIFY_LIB = function(nMsg:Integer; dwParam1:LongWord=0; dwParam2:LongWord=0) :Integer; stdcall; // 参数dwParam1,dwParam2如果不使用则置0
// 此函数用作库通知易编辑环境(IDE)或易运行环境(RUNTIME)有关事件。
pFN_NOTIFY_SYS = function(nMsg:Integer; dwParam1:LongWord=0; dwParam2:LongWord=0) :Integer; stdcall; // 参数dwParam1,dwParam2如果不使用则置0
//////////////////////////////////////////////////////////////////////////////
// 所有命令和方法实现函数的原型 pFN_EXECUTE_CMD
//
// 说明如下:
// 1、必须是CDECL调用方式;
// 2、pRetData用作返回数据;
// 3、!!!如果指定库命令返回数据类型不为_SDT_ALL,可以
// 不填充 pRetData->m_dtDataType,如果为_SDT_ALL,则必须填写;
// 4、pArgInf提供参数数据本身,所指向的MDATA_INF记录每个输入参数,数目等同于nArgCount。
//////////////////////////////////////////////////////////////////////////////
pFN_EXECUTE_CMD = procedure(pRetData:pMDATA_INF; nArgCount:Integer; pArgInf:pMDATA_INF); cdecl;
// 运行支持库中ADDIN功能的函数
pFN_RUN_ADDIN_FN = function(nAddInFnIndex:Integer) :Integer; stdcall;
// 创建库中提供的超级模板程序的函数
pFN_SUPER_TEMPLATE = function(nTemplateIndex:Integer) :Integer; stdcall;
////////////////////////////////////////////////////
const
LIB_FORMAT_VER = 20000101; // 库格式号。在LIB_INFO结构中使用。
type
(* *************** *)
(********************** LIB_INFO *****************************************)
(* *************** *)
//////////////////////////////////////////////////////////////////////////////
// “支持库信息”数据结构 LIB_INFO
pLIB_INFO = ^LIB_INFO;
LIB_INFO = record
m_dwLibFormatVer : LongWord; // 库格式号,应该等于LIB_FORMAT_VER
m_szGuid : PChar; // 对应于本库的唯一GUID串,不能为NULL或空,相同库的所有后续版本此串都应相同。注意,此GUID字串必须使用专用工具软件生成(在Delphi内,可以通过组合键[Ctrl+Shift+G]生成一个GUID字串),以防止出现重复。
m_nMajorVersion : Integer; // 本库的主版本号,必须大于0
m_nMinorVersion : Integer; // 本库的次版本号
m_nBuildNumber : Integer; // 构建版本号。本版本号仅用作区分相同正式版本号的系统软件(譬如仅仅修改了几个 BUG,不值得升级正式版本的系统软件)。任何公布过给用户使用的版本其构建版本号都应该不一样。赋值时应该顺序递增。
m_nRqSysMajorVer : Integer; // 所需要易语言系统的主版本号,目前应该为 3
m_nRqSysMinorVer : Integer; // 所需要易语言系统的次版本号,目前应该为 0
m_nRqSysKrnlLibMajorVer : Integer; // 所需要的系统核心支持库的主版本号,目前应该为 3
m_nRqSysKrnlLibMinorVer : Integer; // 所需要的系统核心支持库的次版本号,目前应该为 0
m_szName : PChar; // 库名,不能为nil或空
m_nLanguage : Integer; // 本库所支持的语言,目前应该为 LT_CHINESE (=1)。见下面的说明和常量定义。
m_szExplain : PChar; // 有关本库的详细解释
m_dwState : LongWord; // 支持库状态,见以下的说明和常量定义(LBS_FUNC_NO_RUN_CODE(4);LBS_NO_EDIT_INFO(8))
m_szAuthor : PChar; // 作者姓名
m_szZipCode : PChar; // 邮编
m_szAddress : PChar; // 地址
m_szPhone : PChar; // 电话
m_szFax : PChar; // 传真
m_szEmail : PChar; // 电子邮件
m_szHomePage : PChar; // 网站主页
m_szOther : PChar; // 作者其它信息
m_nDataTypeCount : Integer; // 本库中自定义数据类型的数目,必须等于m_pDataType所指向数组成员的数目
m_pDataType : pLIB_DATA_TYPE_INFO; // 本库中所有自定义数据类型的定义信息
m_nCategoryCount : Integer; // 全局命令类别数目,必须等同于下面m_szzCategory成员所实际提供的数目
m_szzCategory : PChar; // 全局命令类别说明表,每项为一字符串,前四位数字表示图象索引号(从1开始,0表示无)。减一后的值为指向支持库中名为"LIB_BITMAP"的BITMAP资源中某一部分16X13位图的索引。
m_nCmdCount : Integer; // 本库中提供的所有命令(全局命令及对象方法)的数目(如无则为0)
m_pBeginCmdInfo : pCMD_INFO; // 指向所有命令及方法的定义信息数组(如m_nCmdCount为0,则为nil)
m_pCmdsFunc : ^pFN_EXECUTE_CMD; // 指向每个命令的实现代码首地址,(如m_nCmdCount为0,则为nil)
m_pfnRunAddInFn : pFN_RUN_ADDIN_FN; // 用作为易语言IDE提供附加功能,可为nil
m_szzAddInFnInfo : PChar; // 有关AddIn功能的说明,两个字符串说明一个功能。第一个为功能名称(限20字符),第二个为功能详细介绍(限60字符),最后由两个空串结束。
m_pfnNotify : pFN_NOTIFY_LIB; // 提供接收来自易语言IDE或运行环境通知信息的函数,不能为nil
m_pfnSuperTemplate : pFN_SUPER_TEMPLATE; // 超级模板,暂时保留不用,为nil
m_szzSuperTemplateInfo : PChar; // 为nil
m_nLibConstCount : Integer; // 常量数目
m_pLibConst : pLIB_CONST_INFO; // 指向常量定义数组
m_szzDependFiles : PChar; // 本库正常运行所需要依赖的其他文件,在制作安装软件时将会自动带上这些文件。可为nil。
////////////////////////////////////////////////////////////////////////////
//
// 其中,m_nLanguage 可取以下值之一:
// LT_CHINESE = 1; // 中文
// LT_ENGLISH = 2; // 英文
//
// 其中,m_dwState 可取 0 或以下值之一:
// LBS_FUNC_NO_RUN_CODE = 4; // 本库仅为声明库,没有对应功能的支持代码,因此不能运行
// LBS_NO_EDIT_INFO = 8; // 本库内无供编辑用的信息(编辑信息主要为:各种名称、解释字符串等),无法被易语言IDE加载
//
////////////////////////////////////////////////////////////////////////////
end;
const
//////////////////////////////////////////////////////////////////////////////
// 以下常量在 LIB_INFO 结构的成员m_nLanguage和m_dwState中使用
// 支持库所支持的语言(m_nLanguage)
LT_CHINESE = 1; // 中文
LT_ENGLISH = 2; // 英文
// 支持库状态值(m_dwState)
LBS_FUNC_NO_RUN_CODE = 4; {1 shl 2} // 本库仅为声明库,没有对应功能的支持代码,因此不能运行
LBS_NO_EDIT_INFO = 8; {1 shl 3} // 本库内无供编辑用的信息(编辑信息主要为:各种名称、解释字符串等),无法被易语言IDE加载
////////////////////////////////////////////////////////////////////////////////
type
pFN_GET_LIB_INFO = function() : pLIB_INFO; stdcall; // GetNewInf的函数原型
pFN_ADD_IN_FUNC = function() : Integer; cdecl; // m_pfnRunAddInFn的函数原型
function RGB(r, g, b: Byte): LongWord; // 合成RGB颜色值
const
////////////////////////////////////////////////////////////////////////////////
FUNCNAME_GET_LIB_INFO = 'GetNewInf'; // 取本支持库的PLIB_INFO指针的输出函数名称
LIB_BMP_RESOURCE = 'LIB_BITMAP'; // 支持库中提供的图像资源的名称
LIB_BMP_CX = 16; // 每一图像资源的宽度
LIB_BMP_CY = 13; // 每一图像资源的高度
LIB_BMP_BKCOLOR = $FFFFFF; // 图像资源的底色(白色): RGB(255, 255, 255)=$FFFFFF=16777215
{ 运行时使用 } WM_APP = $8000; // 定义于VC中的WinUser.h,含条件编译参数WINVER>=$0400(即Windows95及以上版本)
WU_GET_WND_PTR = (WM_APP + 2); // 用作支持窗口单元事件反馈。
WU_SIZE_CHANGED = (WM_APP + 3); // 用作在窗口尺寸改变后通知所有条状窗口单元。
WU_PARENT_RELAYOUT_BAR = (WM_APP + 4); // 用作通知顶层窗口重新布局所有的 bar 单元,通常在 bar 单元改变了自身尺寸后使用。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -