?? lib.h
字號:
/*/////////////*/
// 支持庫可以通知易編輯環境(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 + -