?? lib.h
字號(hào):
#ifndef __LIB_H
#define __LIB_H
/*
版權(quán)聲明:
本文件版權(quán)為易語言作者吳濤所有,僅授權(quán)給第三方用作開發(fā)易語言支持庫,禁止用于其他任何場(chǎng)合。
*/
// 以下是由系統(tǒng)定義的基本數(shù)據(jù)類型,不可再更改。
#define _SDT_NULL 0 // 空白數(shù)據(jù)類型
#define _SDT_ALL MAKELONG (MAKEWORD (0, 0), 0x8000) // 通用型
/* 僅用于支持庫命令定義其參數(shù)或返回值的數(shù)據(jù)類型,當(dāng)用于定義庫命令參數(shù)時(shí),
_SDT_ALL可以匹配所有數(shù)據(jù)類型(數(shù)組類型必須符合要求)。*/
#define SDT_BYTE MAKELONG (MAKEWORD (1, 1), 0x8000) // 字節(jié)
#define SDT_SHORT MAKELONG (MAKEWORD (1, 2), 0x8000) // 短整數(shù)
#define SDT_INT MAKELONG (MAKEWORD (1, 3), 0x8000) // 整數(shù)
#define SDT_INT64 MAKELONG (MAKEWORD (1, 4), 0x8000) // 長整數(shù)
#define SDT_FLOAT MAKELONG (MAKEWORD (1, 5), 0x8000) // 小數(shù)
#define SDT_DOUBLE MAKELONG (MAKEWORD (1, 6), 0x8000) // 雙精度小數(shù)
#define SDT_BOOL MAKELONG (MAKEWORD (2, 0), 0x8000) // 邏輯
#define SDT_DATE_TIME MAKELONG (MAKEWORD (3, 0), 0x8000) // 日期時(shí)間
#define SDT_TEXT MAKELONG (MAKEWORD (4, 0), 0x8000) // 文本
#define SDT_BIN MAKELONG (MAKEWORD (5, 0), 0x8000) // 字節(jié)集
#define SDT_SUB_PTR MAKELONG (MAKEWORD (6, 0), 0x8000) // 記錄用戶易語言子程序的代碼地址
// 用作區(qū)分?jǐn)?shù)據(jù)類型的類別。
#define DTM_SYS_DATA_TYPE_MASK 0x80000000
#define DTM_USER_DATA_TYPE_MASK 0x40000000
#define DTM_LIB_DATA_TYPE_MASK 0x00000000
// 在數(shù)據(jù)類型中的數(shù)組標(biāo)志,如果某數(shù)據(jù)類型值此位置1,則表示為此數(shù)據(jù)類型的數(shù)組。
// 本標(biāo)志僅用作在運(yùn)行時(shí)為具有AS_RECEIVE_VAR_OR_ARRAY或AS_RECEIVE_ALL_TYPE_DATA
// 標(biāo)志的庫命令參數(shù)說明其為是否為數(shù)組數(shù)據(jù),其他場(chǎng)合均未使用。因此其他地方均
// 可以忽略本標(biāo)志。
#define DT_IS_ARY 0x20000000
typedef DWORD DATA_TYPE;
typedef DATA_TYPE* PDATA_TYPE;
typedef struct
{
LPTSTR m_szName; // 參數(shù)名稱
LPTSTR m_szExplain; // 參數(shù)詳細(xì)解釋
SHORT m_shtBitmapIndex; // 參見 CMD_INFO 中的同名成員
SHORT m_shtBitmapCount; // 參見 CMD_INFO 中的同名成員
DATA_TYPE m_dtDataType; // 參數(shù)的數(shù)據(jù)類型
INT m_nDefault;
// 系統(tǒng)基本類型參數(shù)的默認(rèn)指定值(在編譯時(shí)編譯器將自動(dòng)處理):
// 1、數(shù)值型:直接為數(shù)值(如為小數(shù),只能指定其整數(shù)部分,
// 如為長整數(shù),只能指定不超過INT限值的部分);
// 2、邏輯型:1等于真,0等于假;
// 3、文本型:本成員此時(shí)為LPTSTR指針,指向默認(rèn)文本串;
// 4、其它所有類型參數(shù)一律無默認(rèn)指定值。
#define AS_HAS_DEFAULT_VALUE (1 << 0)
// 本參數(shù)有默認(rèn)值,默認(rèn)值在m_nDefault中說明,與下標(biāo)志互斥。
#define AS_DEFAULT_VALUE_IS_EMPTY (1 << 1)
// 本參數(shù)有默認(rèn)值,默認(rèn)值為空,與上標(biāo)志互斥。
// 下面五個(gè)標(biāo)志同時(shí)只能有一個(gè)置位。
#define AS_RECEIVE_VAR (1 << 2)
// 為本參數(shù)提供數(shù)據(jù)時(shí)必須提供非數(shù)組型容器。
#define AS_RECEIVE_VAR_ARRAY (1 << 3)
// 為本參數(shù)提供數(shù)據(jù)時(shí)必須提供數(shù)組型容器。
#define AS_RECEIVE_VAR_OR_ARRAY (1 << 4)
// 為本參數(shù)提供數(shù)據(jù)時(shí)必須提供數(shù)組或非數(shù)組型容器。
#define AS_RECEIVE_ARRAY_DATA (1 << 5)
// 為本參數(shù)提供數(shù)據(jù)時(shí)必須提供數(shù)組型數(shù)據(jù)。
#define AS_RECEIVE_ALL_TYPE_DATA (1 << 6)
// 為本參數(shù)提供數(shù)據(jù)時(shí)可以提供非數(shù)組或數(shù)組數(shù)據(jù)。
DWORD m_dwState;
}
ARG_INFO, *PARG_INFO;
struct CMD_INFO
{
LPTSTR m_szName; // 命令中文名稱
LPTSTR m_szEGName; // 命令英文名稱,可以為空或NULL。
LPTSTR m_szExplain; // 命令詳細(xì)解釋
SHORT m_shtCategory; // 全局命令的所屬類別,從1開始,減一后的值為指向LIB_INFO的
// m_szzCategory成員所提供的某個(gè)類別字符串的索引。
// 對(duì)象成員命令的此值為-1。
#define CT_IS_HIDED (1 << 2)
// 本命令是否為隱含命令(即不需要由用戶直接輸入的命令(如循環(huán)結(jié)束命令)或被廢棄
// 但為了保持兼容性又要存在的命令)。
#define CT_IS_ERROR (1 << 3)
// 本命令在本庫中不能使用,具有此標(biāo)志一定隱含,主要用作在不同語言版本的相同庫中使用,
// 即:A命令在A語言版本庫中可能需要實(shí)現(xiàn)并使用,但在B語言版本庫中可能就不需要。如果
// 程序中使用了具有此標(biāo)志的命令,則只能支持該程序調(diào)入和編譯,而不能支持運(yùn)行。
// 如具有此標(biāo)志,可以不實(shí)現(xiàn)本命令的執(zhí)行部分。
#define CT_DISABLED_IN_RELEASE_VER (1 << 4)
// 具有本標(biāo)志的命令在易語言系統(tǒng)編譯RELEASE版易程序時(shí)將被跳過,本類型命令必須無返回值。
#define CT_ALLOW_APPEND_NEW_ARG (1 << 5)
// 在本命令的參數(shù)表的末尾是否可以添加新的參數(shù),新參數(shù)等同于參數(shù)表中的最后一個(gè)參數(shù)。
#define CT_RETURN_ARRAY_DATA (1 << 6)
// 用于說明m_dtRetType,說明是否為返回?cái)?shù)組數(shù)據(jù)。
WORD m_wState;
/* !!!!! 千萬注意:如果返回值類型定義為 _SDT_ALL ,絕對(duì)不能返回?cái)?shù)組(即CT_RETURN_ARRAY_DATA
置位)或復(fù)合數(shù)據(jù)類型的數(shù)據(jù)(即用戶或庫自定義數(shù)據(jù)類型但不包含窗口或菜單單元),
因?yàn)橛脩舫绦驘o法自動(dòng)刪除復(fù)合類型中所分配的額外空間(如文本型或者字節(jié)集型成員等)。 */
DATA_TYPE m_dtRetType; // 返回值類型。
WORD m_wReserved; // 保留,必須為0。
// 級(jí)別宏,用作為用戶提供學(xué)習(xí)難度說明。
#define LVL_SIMPLE 1 // 初級(jí)
#define LVL_SECONDARY 2 // 中級(jí)
#define LVL_HIGH 3 // 高級(jí)
SHORT m_shtUserLevel; // 命令的用戶級(jí)別,本成員的值為上面的級(jí)別宏。
SHORT m_shtBitmapIndex; // 指定圖像索引,從1開始,0表示無。減一后的值為指向支持庫中名為
// "LIB_BITMAP"的BITMAP資源中某一部分16X13位圖的索引。
SHORT m_shtBitmapCount; // 圖像數(shù)目(用作為IDE提供動(dòng)畫圖片).
INT m_nArgCount; // 命令的參數(shù)數(shù)目
PARG_INFO m_pBeginArgInfo; // 指向本命令的參數(shù)定義信息數(shù)組
};
typedef CMD_INFO* PCMD_INFO;
struct LIB_DATA_TYPE_ELEMENT
{
DATA_TYPE m_dtDataType; // 本數(shù)據(jù)成員的數(shù)據(jù)類型。
LPBYTE m_pArySpec; // 如果本成員為數(shù)組,則本成員提供數(shù)組指定串,否則此值為NULL。
// 數(shù)組指定串的格式為:首先為一個(gè)BYTE記錄該數(shù)組的維數(shù)(如果為0表示不為數(shù)組,最大值為0x7f),
// 然后為對(duì)應(yīng)數(shù)目的INT值順序記錄對(duì)應(yīng)維的元素?cái)?shù)目。
LPTSTR m_szName; // 本數(shù)據(jù)成員的名稱,如果本數(shù)據(jù)成員所屬的數(shù)據(jù)類型只有這一個(gè)數(shù)據(jù)成員,此值應(yīng)該為NULL。
LPTSTR m_szEGName; // 本數(shù)據(jù)成員的英文名稱,可以為空或NULL。
LPTSTR m_szExplain; // 本數(shù)據(jù)成員的詳細(xì)說明。
#define LES_HAS_DEFAULT_VALUE (1 << 0) // 本數(shù)據(jù)成員有默認(rèn)值,默認(rèn)值在m_nDefault中說明。
DWORD m_dwState;
// 僅當(dāng) m_dwState 包含 LES_HAS_DEFAULT_VALUE 標(biāo)志且非數(shù)組時(shí)才有效。
INT m_nDefault;
// 本數(shù)據(jù)成員的默認(rèn)指定值:
// 1、數(shù)值型:直接為數(shù)值(如為小數(shù),只能指定其整數(shù)部分,
// 如為長整數(shù),只能指定不超過INT限值的部分);
// 2、邏輯型:1等于真,0等于假;
// 3、文本型:本變量此時(shí)為LPTSTR指針,指向默認(rèn)文本串;
// 4、其它所有類型參數(shù)一律無默認(rèn)指定值。
};
typedef LIB_DATA_TYPE_ELEMENT* PLIB_DATA_TYPE_ELEMENT;
// 固定屬性的數(shù)目
#define FIXED_WIN_UNIT_PROPERTY_COUNT 8
// 每個(gè)固定屬性定義
#define FIXED_WIN_UNIT_PROPERTY \
{ _WT("左邊"), _WT("left"), NULL, UD_INT, NULL, NULL }, \
{ _WT("頂邊"), _WT("top"), NULL, UD_INT, NULL, NULL }, \
{ _WT("寬度"), _WT("width"), NULL, UD_INT, NULL, NULL }, \
{ _WT("高度"), _WT("height"), NULL, UD_INT, NULL, NULL }, \
{ _WT("標(biāo)記"), _WT("tag"), NULL, UD_TEXT, NULL, NULL }, \
{ _WT("可視"), _WT("visible"), NULL, UD_BOOL, NULL, NULL }, \
{ _WT("禁止"), _WT("disable"), NULL, UD_BOOL, NULL, NULL }, \
{ _WT("鼠標(biāo)指針"), _WT("MousePointer"), NULL, UD_CURSOR, NULL, NULL }
// 用作定義窗口單元屬性。
struct UNIT_PROPERTY
{
LPTSTR m_szName; // 屬性名稱,注意為利于在屬性表中同時(shí)設(shè)置多對(duì)象的屬性,相同意義屬性的名稱最好一致。
LPTSTR m_szEGName; // 英文名稱。
LPTSTR m_szExplain; // 屬性解釋。
#define UD_INT 1001 // 數(shù)據(jù)為INT值
#define UD_DOUBLE 1002 // 數(shù)據(jù)為DOUBLE值
#define UD_BOOL 1003 // 數(shù)據(jù)為BOOL值
#define UD_DATE_TIME 1004 // 數(shù)據(jù)為DATE值
#define UD_TEXT 1005 // 數(shù)據(jù)為字符串
#define UD_PICK_INT 1006 // 數(shù)據(jù)為INT值,用戶只能選擇,不能編輯。
#define UD_PICK_TEXT 1007 // 數(shù)據(jù)為待選字符串,用戶只能選擇,不能編輯。
#define UD_EDIT_PICK_TEXT 1008 // 數(shù)據(jù)為待選字符串,用戶可以編輯。
#define UD_PIC 1009 // 為圖片文件數(shù)據(jù)
#define UD_ICON 1010 // 為圖標(biāo)文件數(shù)據(jù)
#define UD_CURSOR 1011
// 第一個(gè)INT記錄鼠標(biāo)指針類型,具體值見 Windows API 的 LoadCursor 函數(shù)。
// 如為-1,則為自定義鼠標(biāo)指針,此時(shí)后跟相應(yīng)長度的鼠標(biāo)指針文件內(nèi)容。
#define UD_MUSIC 1012 // 為聲音文件數(shù)據(jù)
#define UD_FONT 1013 // 為一個(gè)LOGFONT數(shù)據(jù)結(jié)構(gòu),不能再改。
#define UD_COLOR 1014 // 數(shù)據(jù)為COLORREF值。
#define UD_COLOR_TRANS 1015
// 數(shù)據(jù)為COLORREF值,允許透明顏色(用CLR_DEFAULT代表,CLR_DEFAULT在
// VC++的COMMCTRL.H頭文件中定義)。
#define UD_FILE_NAME 1016
// 數(shù)據(jù)為文件名字符串。此時(shí)m_szzPickStr中的數(shù)據(jù)為:
// 對(duì)話框標(biāo)題 + "\0" + 文件過濾器串 + "\0" + 默認(rèn)后綴 + "\0" +
// "1"(取保存文件名)或"0"(取讀入文件名) + "\0"
#define UD_COLOR_BACK 1017
// 數(shù)據(jù)為COLORREF值,允許系統(tǒng)默認(rèn)背景顏色(用CLR_DEFAULT代表)。
#define UD_ODBC_CONNECT_STR 1021
// ODBC數(shù)據(jù)連接文本
#define UD_ODBC_SELECT_STR 1022
// ODBC數(shù)據(jù)查詢SQL文本
#define UD_IMAGE_LIST 1023
// 圖片組,數(shù)據(jù)結(jié)構(gòu)為:
#define IMAGE_LIST_DATA_MARK (MAKELONG ('IM', 'LT'))
/*
DWORD: 標(biāo)志數(shù)據(jù):為 IMAGE_LIST_DATA_MARK
COLORREF: 透明顏色(可以為CLR_DEFAULT)
后面為圖片組數(shù)據(jù),用CImageList::Read和CImageList::Write讀寫。
*/
#define UD_CUSTOMIZE 1024 // 自定義類型屬性
SHORT m_shtType; // 屬性的數(shù)據(jù)類型(為上面的宏值)。
#define UW_HAS_INDENT (1 << 0) // 在屬性表中顯示時(shí)向外縮進(jìn)一段,一般用于子屬性。
#define UW_GROUP_LINE (1 << 1) // 在屬性表中本屬性下顯示分組底封線。
#define UW_ONLY_READ (1 << 2) // 只讀屬性,設(shè)計(jì)時(shí)不可用,運(yùn)行時(shí)不能寫。
#define UW_CANNOT_INIT (1 << 3) // 設(shè)計(jì)時(shí)不可用,但運(yùn)行時(shí)可以正常讀寫。與上標(biāo)志互斥。
WORD m_wState;
LPTSTR m_szzPickStr;
// 當(dāng)m_nType為UP_PICK_INT、UP_PICK_TEXT、UD_EDIT_PICK_TEXT、UD_FILE_NAME時(shí)不能為NULL。
// 順序記錄以"\0"分隔的所有備選文本(除開UD_FILE_NAME為所說明的特殊格式),最后以一個(gè)"\0"結(jié)束。
};
typedef UNIT_PROPERTY* PUNIT_PROPERTY;
typedef struct
{
LPTSTR m_szName; // 參數(shù)名稱
LPTSTR m_szExplain; // 參數(shù)詳細(xì)解釋
#define EAS_IS_BOOL_ARG (1 << 0) // 為邏輯型參數(shù),如無此標(biāo)志,則認(rèn)為是整數(shù)型參數(shù)
DWORD m_dwState;
}
EVENT_ARG_INFO, *PEVENT_ARG_INFO;
struct EVENT_INFO
{
LPTSTR m_szName; // 事件名稱
LPTSTR m_szExplain; // 事件詳細(xì)解釋
#define EV_IS_HIDED (1 << 0)
// 本事件是否為隱含事件(即不能被一般用戶所使用或被廢棄但為了保持兼容性又要存在的事件)。
#define EV_RETURN_INT (1 << 3)
// 本事件的處理子程序需要返回一個(gè)整數(shù)。
#define EV_RETURN_BOOL (1 << 4)
// 本事件的處理子程序需要返回一個(gè)邏輯值,與上標(biāo)志互斥。
DWORD m_dwState;
INT m_nArgCount; // 事件的參數(shù)數(shù)目
PEVENT_ARG_INFO m_pEventArgInfo; // 事件參數(shù)
};
typedef EVENT_INFO* PEVENT_INFO;
////////////////////////////////////
typedef DWORD HUNIT;
// 通用接口指針。
typedef void (WINAPI *PFN_INTERFACE) ();
// 窗口單元對(duì)外接口ID。
#define ITF_CREATE_UNIT 1 // 創(chuàng)建單元
// 下面兩個(gè)接口僅在可視化設(shè)計(jì)窗口界面時(shí)使用。
#define ITF_PROPERTY_UPDATE_UI 2 // 說明屬性目前可否被修改
#define ITF_DLG_INIT_CUSTOMIZE_DATA 3 // 使用對(duì)話框設(shè)置自定義數(shù)據(jù)
#define ITF_NOTIFY_PROPERTY_CHANGED 4 // 通知某屬性數(shù)據(jù)被修改
#define ITF_GET_ALL_PROPERTY_DATA 5 // 取全部屬性數(shù)據(jù)
#define ITF_GET_PROPERTY_DATA 6 // 取某屬性數(shù)據(jù)
#define ITF_IS_NEED_THIS_KEY 8 // 詢問單元是否需要指定的按鍵信息,用作窗口單元
// 截獲處理默認(rèn)為運(yùn)行時(shí)環(huán)境處理的按鍵,如TAB、
// SHIFT+TAB、UP、DOWN等。
typedef PFN_INTERFACE (WINAPI *PFN_GET_INTERFACE) (INT nInterfaceNO);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -