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

📄 elibtypes.pas

📁 支持库类 / 模块控件 / 支持库类 eLIB++支持库 源代码 Delphi
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  // 通知用数据结构。

  // 支持库可以通知易编辑环境(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 + -