scintilla是乙個開源的編輯元件,它不僅具有通常的編輯功能,而且還提供了語法樣式、**摺疊、標籤、**自動完成和提示等功能。
windows版本的scintilla,是乙個標準的windows元件,使用者可以通過sendmessage函式傳送訊息,與其進行互動。sendmessage函式介面如下所示:
lresult sendmessage(
hwnd hwnd,
uint msg,
wparam wparam,
lparam lparam
);gtk+版本的scintilla,採用和windows版本相似的方式,進行訊息傳遞。下面的介紹,將以windows版本為主。
scintilla提供了大量的訊息api,每個訊息可以帶有0個、1個或2個引數。sendmessage函式中的訊息,通常帶有2個引數:wparam和lparam,因此對於沒有使用的引數,強烈建議將其設定為0,以保證與將來版本的相容。對於大多數sci_set***xx設定類訊息,都會有乙個對應的sci_get***xx查詢訊息。
引數型別
訊息中的引數型別,如下表所示:
引數型別
引數說明
bool
0表示false,1表示true
int32位有符號整數
const char*
常量字串指標,字串可能以0結尾,或者通過另乙個引數指明長度
char*
字元緩衝區指標,scintilla將會用查詢到的字元資料進行填充。在一些情況下,通過另乙個引數,指明了緩衝區大小;在另一些情況下,你必須保證緩衝區足夠大,可以容納查詢到的字元資料。如果你傳入了乙個空指標0,訊息將返回查詢到的字元資料大小。
colour
rgb格式的顏色值。每種顏色取值0 - 255,red、green、blue按如下方式組合,得到colour值:colour = red | (green << 8) | (blue << 16)。0x000000,黑色;0xff0000,藍色;0x00ff00,綠色;0x0000ff,紅色;0xffffff,白色。
alpha
alpha通道值,表示顏色的半透明度,取值範圍為:0(完全透明,sc_alpha_transparent)- 255(不透明,sc_alpha_opaque)。值256(c_alpha_noalpha)表示不使用alpha通道。並不是所有平台都支援alpha通道,並且只有一部分訊息實現了alpha效果。訊息預設alpha值為256,不使用alpha通道。
未使用引數,強烈建議將其設定為0,以保證與將來版本的相容。
資料型別
在scintilla中,使用了如下幾種資料結構:
characterrange
字元範圍資料結構,與win32資料結構charrange相同。
struct characterrange ;
textrange
文字範圍資料結構,主要用於從scintilla元件獲取指定範圍的文字,與win32資料結構textrange相同。
struct textrange ;
texttofind
搜尋文字資料結構,與win32資料結構findtextex相同。
struct texttofind ;
scnotification
事件通知資料結構。在windows中,scintilla將向它的父視窗傳送wm_notify訊息;在gtk+中,scintilla將向它的父視窗傳送notify訊號。
struct notifyheader ;
m_hmodule = loadlibrary(_t("scilexer.dll"));
if (null == m_hmodule)
::messagebox(null, _t("the scintilla dll could not be loaded."),
_t("error loading scintilla"), mb_ok | mb_iconerror);
return true;
// todo: 在此新增專用**和/或呼叫基類
if (m_hmodule)
freelibrary(m_hmodule);
}然後,在ceasyeditview中,增加wm_paint訊息處理函式void onpaint(),並在bool precreatewindow(createstruct& cs)和void onpaint()函式中增加**:
bool ceasyeditview::precreatewindow(createstruct& cs)
// todo: 在此處通過修改
// createstruct cs 來修改視窗類或樣式
cs.lpszclass = _t("scintilla");
return cview::precreatewindow(cs);
void ceasyeditview::onpaint()
// cpaintdc dc(this); // device context for painting
// todo: 在此處新增訊息處理程式**
// 不為繪圖訊息呼叫cview::onpaint()
default();
}這樣,scintilla控制項就已經整合到view中了。
為了處理scintilla控制項傳送的事件通知,在cchildframe中,增加wm_notify訊息處理函式bool onnotify(wparam wparam, lparam lparam, lresult* presult):
bool cchildframe::onnotify(wparam wparam, lparam lparam, lresult* presult)
// todo: 在此新增專用**和/或呼叫基類
scnotification *pscnotification = (scnotification*)lparam;
ceasyeditview *pview = (ceasyeditview*)getactiveview();
switch (pscnotification->nmhdr.code)
return cmdichildwnd::onnotify(wparam, lparam, presult);
}
Scintilla使用指南 1 簡介
scintilla 是乙個開源的編輯元件,它不僅具有通常的編輯功能,而且還提供了語法樣式 摺疊 標籤 自動完成和提示等功能。windows 版本的scintilla,是乙個標準的windows元件,使用者可以通過sendmessage函式傳送訊息,與其進行互動。sendmessage函式介面如下所示...
Scintilla使用指南 3 搜尋和替換
scintilla 提供了搜尋和替換功能,它可以進行普通查詢和正規表示式查詢。scintilla的正規表示式,只提供了很有限的一些基本功能。在進行文字搜尋時,需要設定搜尋標誌 搜尋標誌 說明scfind matchcase 匹配大小寫 scfind wholeword 匹配整個單選 scfind w...
sqlmap詳細使用指南(1)
1.sqlmap update 更新公升級 2.sqlmap u http current user 獲取當前使用者名稱 3.sqlmap u http current db 獲取當前數 據庫名稱 4.sqlmap u http tables d db name 列表名 5.sqlmap u htt...