?? elibtypes.~pas
字號(hào):
//////////////////////////////////////////////////////////////////////////////
// “庫常量”數(shù)據(jù)結(jié)構(gòu) Lib_Const_Info
pLIB_CONST_INFO =^LIB_CONST_INFO;
LIB_CONST_INFO = record
m_szName : PChar; // 常量名稱
m_szEGName : PChar; // 常量英文名稱,可以為空或nil
m_szExplain : PChar; // 詳細(xì)解釋
m_shtReserved : Smallint; // 必須為 1 。
m_shtType : Smallint; // 常量類型,取值為CT_NULL(0),CT_NUM(1),CT_BOOL(2),CT_TEXT(3)之一,見下面的說明和常量定義
m_szText : PChar; // 文本(當(dāng)m_shtType取值為CT_TEXT時(shí))
m_dbValue : double; // 數(shù)值(當(dāng)m_shtType取值為CT_NUM、CT_BOOL時(shí))
////////////////////////////////////////////////////////////////////////////
// 其中,m_shtType 可以取以下常量值之一:
// CT_NULL = 0; // 空值
// CT_NUM = 1; // 數(shù)值型,如: 3.14159
// CT_BOOL = 2; // 邏輯型,如: 1 ( 1代表'真'; 0代表'假')
// CT_TEXT = 3; // 文本型,如: 'abc'
////////////////////////////////////////////////////////////////////////////
end;
const
//////////////////////////////////////////////////////////////////////////////
// 以下常量在 LIB_CONST_INFO 結(jié)構(gòu)中用到
CT_NULL = 0; // 空值
CT_NUM = 1; // 數(shù)值型,如: 3.14159
CT_BOOL = 2; // 邏輯型,如: 1 ( 1代表'真'; 0代表'假')
CT_TEXT = 3; // 文本型,如: 'abc'
//////////////////////////////////////////////////////////////////////////////
type
//////////////////////////////////////////////////////////////////////////////
// 常用數(shù)據(jù)結(jié)構(gòu)。
// 標(biāo)識(shí)窗口單元
pMUNIT = ^MUNIT;
MUNIT = record
m_dwFormID : LongWord;
m_dwUnitID : Longword;
end;
// 臨時(shí)結(jié)構(gòu),僅在MDATA_INF中用于定義m_Value成員
T_MDATA_INF_Data = packed record // Note: packed record, it's important.
case Integer of
// 第一部分。注意:當(dāng)對(duì)應(yīng)參數(shù)具有AS_RECEIVE_VAR或AS_RECEIVE_VAR_ARRAY或AS_RECEIVE_VAR_OR_ARRAY標(biāo)志定義時(shí)將使用下面的第二部分。
0: ( m_byte : Byte); // SDT_BYTE 數(shù)據(jù)類型的數(shù)據(jù),下同。
1: ( m_short : SmallInt); // SDT_SHORT
2: ( m_int : Integer); // SDT_INT
3: ( m_int64 : Int64); // SDT_INT64
4: ( m_float : Single); // SDT_FLOAT
5: ( m_double : Double); // SDT_DOUBLE
6: ( m_date : TDateTime); // SDT_DATE_TIME (在VC中: typedef double DATE; 在Delphi中: type TDateTime = type Double;)
7: ( m_bool : LongBool); // SDT_BOOL (在VC中: typedef int BOOL;)
8: ( m_pText : PChar); // SDT_TEXT,經(jīng)過系統(tǒng)預(yù)處理,即使是空文本,此指針值也不會(huì)為nil,以便于處理。指針?biāo)赶驍?shù)據(jù)的格式見前面的描述。!!!為了避免修改到常量段(m_pText有可能會(huì)指向易程序常量段區(qū)域)中的數(shù)據(jù),只可讀取而不可更改其中的內(nèi)容,下同。
9: ( m_pBin : ^Byte); //??? LPBYTE; // SDT_BIN,經(jīng)過系統(tǒng)預(yù)處理,即使是空字節(jié)集,此指針值也不會(huì)為nil,以便于處理。指針?biāo)赶驍?shù)據(jù)的格式見前面的描述。!!!只可讀取而不可更改其中的內(nèi)容。
10:( m_dwSubCodeAdr : LongWord); // SDT_SUB_PTR,為子程序代碼地址指針。
11:( m_unit : MUNIT); // 窗口單元、菜單數(shù)據(jù)類型的數(shù)據(jù)。
12:( m_pCompoundData : Pointer); // 復(fù)合數(shù)據(jù)類型數(shù)據(jù)指針,指針?biāo)赶驍?shù)據(jù)的格式見前面的描述。!!! 只可讀取而不可更改其中的內(nèi)容。
13:( m_pAryData : Pointer); // 數(shù)組數(shù)據(jù)指針,指針?biāo)赶驍?shù)據(jù)的格式見前面的描述。注意如果為文本或字節(jié)集數(shù)組,則成員數(shù)據(jù)指針可能為NULL。!!! 只可讀取而不可更改其中的內(nèi)容。
// 第二部分。為指向變量地址的指針,僅當(dāng)參數(shù)具有AS_RECEIVE_VAR或AS_RECEIVE_VAR_ARRAY或AS_RECEIVE_VAR_OR_ARRAY標(biāo)志時(shí)才被使用。
14:( m_pByte : ^Byte); // SDT_BYTE 數(shù)據(jù)類型變量的地址,下同。
15:( m_pShort : ^SmallInt); // SDT_SHORT
16:( m_pInt : ^Integer); // SDT_INT
17:( m_pInt64 : ^Int64); // SDT_INT64
18:( m_pFloat : ^Single); // SDT_FLOAT
19:( m_pDouble : ^Double); // SDT_DOUBLE
20:( m_pDate : ^TDateTime); // SDT_DATE_TIME
21:( m_pBool : ^LongBool); // SDT_BOOL
22:( m_ppText : PPChar); // SDT_TEXT,注意*m_ppText可能為NULL(代表空文本)。寫入新值之前必須釋放前值,例句:NotifySys (NRS_MFREE, (DWORD)*m_ppText)。!!!不可直接更改*m_ppText所指向的內(nèi)容,只能釋放原指針后設(shè)置入NULL(空文本)或使用NRS_MALLOC通知分配的新內(nèi)存地址指針(下同)。
23:( m_ppBin : ^PByte); // SDT_BIN,注意*m_ppBin可能為NULL(代表空字節(jié)集)。寫入新值之前必須釋放前值,例句:NotifySys (NRS_MFREE, (DWORD)*m_ppBin)。!!!不可直接更改*m_ppBin所指向的內(nèi)容,只能釋放原指針后設(shè)置入NULL(空字節(jié)集)或新指針。
24:( m_pdwSubCodeAdr : ^LongWord); // SDT_SUB_PTR,子程序代碼地址變量地址。
25:( m_pUnit : ^MUNIT); // 窗口單元、菜單數(shù)據(jù)類型變量地址。
26:( m_ppCompoundData : ^Pointer); // 復(fù)合數(shù)據(jù)類型變量地址。!!!注意寫入新值之前必須使用NRS_MFREE通知逐一釋放所有成員(即:SDT_TEXT、SDT_BIN及復(fù)合數(shù)據(jù)類型成員)及原地址指針。!!!不可直接更改*m_ppCompoundData所指向的內(nèi)容,只能釋放原指針后設(shè)置入新指針。
27:( m_ppAryData : ^Pointer); // 數(shù)組數(shù)據(jù)變量地址,注意: 1、寫入新值之前必須釋放原值,例句:NotifySys (NRS_FREE_ARY,m_dtDataType, (DWORD)*m_ppAryData),注意:此例句只適用于m_dtDataType為系統(tǒng)基本數(shù)據(jù)類型時(shí)的情況,如果為復(fù)合數(shù)據(jù)類型,必須根據(jù)其定義信息逐一釋放。2、如果為文本或字節(jié)集數(shù)組,則其中成員的數(shù)據(jù)指針可能為NULL。!!!不可直接更改*m_ppAryData所指向的內(nèi)容,只能釋放原指針后設(shè)置入新指針。
end;
// MDATA_INF用作記錄函數(shù)指針pFN_EXECUTE_CMD的返回值和參數(shù)信息
pMDATA_INF = ^MDATA_INF;
MDATA_INF = record
m_Value : T_MDATA_INF_Data; // 數(shù)據(jù)內(nèi)容
m_dtDataType : DATA_TYPE; // 數(shù)據(jù)類型,見下面的說明
////////////////////////////////////////////////////////////////////////////
//
// 關(guān)于 m_dtDataType 的說明:
//
// 1、當(dāng)用作傳遞參數(shù)數(shù)據(jù)時(shí),如果該參數(shù)具有AS_RECEIVE_VAR_OR_ARRAY或
// AS_RECEIVE_ALL_TYPE_DATA標(biāo)志,且為數(shù)組數(shù)據(jù),則包含標(biāo)志DT_IS_ARY,
// 這也是DT_IS_ARY標(biāo)志的唯一使用場合。
// DT_IS_ARY 的定義為:const DT_IS_ARY = $20000000;
// 2、當(dāng)用作傳遞參數(shù)數(shù)據(jù)時(shí),如果為空白數(shù)據(jù),則為_SDT_NULL。
//
////////////////////////////////////////////////////////////////////////////
end;
ArgArray = array of MDATA_INF; // 通常用于全局命令的實(shí)現(xiàn)代碼中, 輔助讀取參數(shù)值。
// !!! ASSERT(sizeof(MDATA_INF)==sizeof(DWORD)*3); 結(jié)構(gòu)MDATA_INF的尺寸必須等于12字節(jié)。
//////////////////////////////////////////////////////////////////////////////
// 通知用數(shù)據(jù)結(jié)構(gòu)。
// 支持庫可以通知易編輯環(huán)境(IDE)或易運(yùn)行環(huán)境(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; // 調(diào)用ITF_CREATE_UNIT接口所傳遞過來的所處窗口ID(dwWinFormID參數(shù))
m_dwUnitID : Longword; // 調(diào)用ITF_CREATE_UNIT接口所傳遞過來的窗口單元ID(dwUnitID參數(shù))
m_nEventIndex : Integer; // 事件索引(在窗口單元定義信息LIB_DATA_TYPE_INFO中m_pPropertyBegin成員中的位置)
m_nArgCount : Integer; // 本事件所傳遞的參數(shù)數(shù)目,最多 5 個(gè)。
m_nArgValue : array[0..4] of Integer; // 記錄各參數(shù)值,SDT_BOOL型參數(shù)值為 1 或 0。
//!!! 注意下面兩個(gè)成員在沒有定義返回值的事件中無效,其值可能為任意值。
m_blHasReturnValue : LongBool; // 用戶事件處理子程序處理完畢事件后是否提供了返回值。
m_nReturnValue : Integer; // 用戶事件處理子程序處理完畢事件后的返回值,邏輯值用數(shù)值 0(假) 和 1(真) 返回。
procedure EVENT_NOTIFY(dwFormID,dwUnitID : LongWord; nEventIndex:Integer);
end;
const
//////////////////////////////////////////////////////////////////////////////
// 消息常量定義 (消息號(hào))
// NES_ 開頭的常量為僅被易編輯環(huán)境(IDE)處理的通知(消息號(hào))。[NES: Notify_Editable_System]
NES_GET_MAIN_HWND = 1; // 取易編輯環(huán)境主窗口的句柄,可以在支持庫的AddIn函數(shù)中使用。
NES_RUN_FUNC = 2; // 通知易編輯環(huán)境運(yùn)行指定的功能,返回一個(gè)BOOL值。dwParam1為功能號(hào);dwParam2為一個(gè)雙DWORD數(shù)組指針,分別提供功能參數(shù)1和2。
// NAS_ 開頭的常量為既被易編輯環(huán)境又被易運(yùn)行環(huán)境處理的通知(消息號(hào))。[NAS: Notify_All_System]
NAS_GET_LIB_DATA_TYPE_INFO = 1002; //返回指定庫定義數(shù)據(jù)類型的pLIB_DATA_TYPE_INFO定義信息指針。dwParam1為欲獲取信息的數(shù)據(jù)類型DATA_TYPE;如果該數(shù)據(jù)類型無效或者不為庫定義數(shù)據(jù)類型,則返回nil,否則返回pLIB_DATA_TYPE_INFO指針。
// NRS_ 開頭的常量為僅能被易運(yùn)行環(huán)境處理的通知(消息號(hào))。[NRS: Notify_Runtime_System]
NRS_UNIT_DESTROIED = 2000; // 通知系統(tǒng)指定的單元已經(jīng)被銷毀。dwParam1為dwFormID;dwParam2為dwUnitID;
NRS_CONVERT_NUM_TO_INT = 2001; // 轉(zhuǎn)換其它數(shù)值格式到整數(shù)。dwParam1為pMDATA_INF指針,其m_dtDataType必須為數(shù)值型。返回轉(zhuǎn)換后的整數(shù)值。
NRS_GET_CMD_LINE_STR = 2002; // 取當(dāng)前命令行文本,返回命令行文本指針,有可能為空串。
NRS_GET_EXE_PATH_STR = 2003; // 取當(dāng)前執(zhí)行文件所處目錄名稱,返回當(dāng)前執(zhí)行文件所處目錄文本指針。
NRS_GET_EXE_NAME = 2004; // 取當(dāng)前執(zhí)行文件名稱,返回當(dāng)前執(zhí)行文件名稱文本指針。
NRS_GET_UNIT_PTR = 2006; // 取單元對(duì)象指針。dwParam1為WinForm的ID;dwParam2為WinUnit的ID。成功返回有效的單元對(duì)象CWnd*指針,失敗返回nil。
NRS_GET_AND_CHECK_UNIT_PTR = 2007; // 取單元對(duì)象指針,并檢查該指針。dwParam1為WinForm的ID;dwParam2為WinUnit的ID。成功返回有效的單元對(duì)象CWnd*指針,失敗自動(dòng)報(bào)告運(yùn)行時(shí)錯(cuò)誤并立即退出程序。
NRS_EVENT_NOTIFY = 2008; // 通知系統(tǒng)產(chǎn)生了事件。dwParam1為PEVENT_NOTIFY指針。如果返回0,表示此事件已被系統(tǒng)拋棄,否則表示系統(tǒng)已經(jīng)成功傳遞此事件到用戶事件處理子程序。
NRS_STOP_PROCESS_EVENT_NOTIFY = 2009; // 通知系統(tǒng)暫停處理事件通知。
NRS_CONTINUE_PROCESS_EVENT_NOTIFY = 2010; // 通知系統(tǒng)繼續(xù)處理事件通知。
NRS_DO_EVENTS = 2018; // 通知Windows系統(tǒng)處理所有已有事件。
NRS_GET_UNIT_DATA_TYPE = 2022; // 取單元數(shù)據(jù)類型。dwParam1為WinForm的ID;dwParam2為WinUnit的ID。成功返回有效的DATA_TYPE,失敗返回0。
NRS_FREE_ARY = 2023; // 釋放指定數(shù)組數(shù)據(jù)。dwParam1為該數(shù)據(jù)的DATA_TYPE,只能為系統(tǒng)基本數(shù)據(jù)類型;dwParam2為指向該數(shù)組數(shù)據(jù)的指針。
NRS_MALLOC = 2024; // 分配指定空間的內(nèi)存,所有與易程序交互的內(nèi)存都必須使用本通知分配。dwParam1為欲需求內(nèi)存字節(jié)數(shù)。dwParam2如為0,則如果分配失敗就自動(dòng)報(bào)告運(yùn)行時(shí)錯(cuò)并退出程序,如不為0,則如果分配失敗就返回nil。返回所分配內(nèi)存的首地址。
NRS_MFREE = 2025; // 釋放已分配的指定內(nèi)存。dwParam1為欲釋放內(nèi)存的首地址。
NRS_MREALLOC = 2026; // 重新分配內(nèi)存。dwParam1為欲重新分配內(nèi)存尺寸的首地址;dwParam2為欲重新分配的內(nèi)存字節(jié)數(shù)。返回所重新分配內(nèi)存的首地址,失敗自動(dòng)報(bào)告運(yùn)行時(shí)錯(cuò)并退出程序。
NRS_RUNTIME_ERR = 2027; // 通知系統(tǒng)已經(jīng)產(chǎn)生運(yùn)行時(shí)錯(cuò)誤。dwParam1為char*指針,說明錯(cuò)誤文本。
NRS_EXIT_PROGRAM = 2028; // 通知系統(tǒng)退出用戶程序。dwParam1為退出代碼,該代碼將被返回到操作系統(tǒng)。
NRS_GET_PRG_TYPE = 2030; // 返回當(dāng)前用戶程序的類型,為2(調(diào)試版)或3(發(fā)布版)。
//////////////////////////////////////////////////////////////////////////////
// 易編輯環(huán)境(IDE)或易運(yùn)行環(huán)境(RUNTIME)可以通知支持庫的碼值(消息號(hào)):
NL_SYS_NOTIFY_FUNCTION = 1;
// 告知支持庫通知系統(tǒng)用的函數(shù)指針,在裝載支持庫前通知,可能有多次,
// (后通知的值應(yīng)該覆蓋前面所通知的值),忽略返回值。
// 庫可將此函數(shù)指針記錄下來以便在需要時(shí)使用它通知信息到系統(tǒng)。
// dwParam1: (PFN_NOTIFY_SYS)
//////////////////////////////////////////////////////////////////////////////
const
NR_OK = 0;
NR_ERR = -1;
type
// 此函數(shù)用作易編輯環(huán)境(IDE)或易運(yùn)行環(huán)境(RUNTIME)通知支持庫有關(guān)事件。
pFN_NOTIFY_LIB = function(nMsg:Integer; dwParam1:LongWord=0; dwParam2:LongWord=0) :Integer; stdcall; // 參數(shù)dwParam1,dwParam2如果不使用則置0
// 此函數(shù)用作庫通知易編輯環(huán)境(IDE)或易運(yùn)行環(huán)境(RUNTIME)有關(guān)事件。
pFN_NOTIFY_SYS = function(nMsg:Integer; dwParam1:LongWord=0; dwParam2:LongWord=0) :Integer; stdcall; // 參數(shù)dwParam1,dwParam2如果不使用則置0
//////////////////////////////////////////////////////////////////////////////
// 所有命令和方法實(shí)現(xiàn)函數(shù)的原型 pFN_EXECUTE_CMD
//
// 說明如下:
// 1、必須是CDECL調(diào)用方式;
// 2、pRetData用作返回?cái)?shù)據(jù);
// 3、!!!如果指定庫命令返回?cái)?shù)據(jù)類型不為_SDT_ALL,可以
// 不填充 pRetData->m_dtDataType,如果為_SDT_ALL,則必須填寫;
// 4、pArgInf提供參數(shù)數(shù)據(jù)本身,所指向的MDATA_INF記錄每個(gè)輸入?yún)?shù),數(shù)目等同于nArgCount。
//////////////////////////////////////////////////////////////////////////////
pFN_EXECUTE_CMD = procedure(pRetData:pMDATA_INF; nArgCount:Integer; pArgInf:pMDATA_INF); cdecl;
// 運(yùn)行支持庫中ADDIN功能的函數(shù)
pFN_RUN_ADDIN_FN = function(nAddInFnIndex:Integer) :Integer; stdcall;
// 創(chuàng)建庫中提供的超級(jí)模板程序的函數(shù)
pFN_SUPER_TEMPLATE = function(nTemplateIndex:Integer) :Integer; stdcall;
////////////////////////////////////////////////////
const
LIB_FORMAT_VER = 20000101; // 庫格式號(hào)。在LIB_INFO結(jié)構(gòu)中使用。
type
(* *************** *)
(********************** LIB_INFO *****************************************)
(* *************** *)
//////////////////////////////////////////////////////////////////////////////
// “支持庫信息”數(shù)據(jù)結(jié)構(gòu) LIB_INFO
pLIB_INFO = ^LIB_INFO;
LIB_INFO = record
m_dwLibFormatVer : LongWord; // 庫格式號(hào),應(yīng)該等于LIB_FORMAT_VER
m_szGuid : PChar; // 對(duì)應(yīng)于本庫的唯一GUID串,不能為NULL或空,相同庫的所有后續(xù)版本此串都應(yīng)相同。注意,此GUID字串必須使用專用工具軟件生成(在Delphi內(nèi),可以通過組合鍵[Ctrl+Shift+G]生成一個(gè)GUID字串),以防止出現(xiàn)重復(fù)。
m_nMajorVersion : Integer; // 本庫的主版本號(hào),必須大于0
m_nMinorVersion : Integer; // 本庫的次版本號(hào)
m_nBuildNumber : Integer; // 構(gòu)建版本號(hào)。本版本號(hào)僅用作區(qū)分相同正式版本號(hào)的系統(tǒng)軟件(譬如僅僅修改了幾個(gè) BUG,不值得升級(jí)正式版本的系統(tǒng)軟件)。任何公布過給用戶使用的版本其構(gòu)建版本號(hào)都應(yīng)該不一樣。賦值時(shí)應(yīng)該順序遞增。
m_nRqSysMajorVer : Integer; // 所需要易語言系統(tǒng)的主版本號(hào),目前應(yīng)該為 3
m_nRqSysMinorVer : Integer; // 所需要易語言系統(tǒng)的次版本號(hào),目前應(yīng)該為 0
m_nRqSysKrnlLibMajorVer : Integer; // 所需要的系統(tǒng)核心支持庫的主版本號(hào),目前應(yīng)該為 3
m_nRqSysKrnlLibMinorVer : Integer; // 所需要的系統(tǒng)核心支持庫的次版本號(hào),目前應(yīng)該為 0
m_szName : PChar; // 庫名,不能為nil或空
m_nLanguage : Integer; // 本庫所支持的語言,目前應(yīng)該為 LT_CHINESE (=1)。見下面的說明和常量定義。
m_szExplain : PChar; // 有關(guān)本庫的詳細(xì)解釋
m_dwState : LongWord; // 支持庫狀態(tài),見以下的說明和常量定義(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; // 網(wǎng)站主頁
m_szOther : PChar; // 作者其它信息
m_nDataTypeCount : Integer; // 本庫中自定義數(shù)據(jù)類型的數(shù)目,必須等于m_pDataType所指向數(shù)組成員的數(shù)目
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -