關於 Rich Edit 控制件
本節將討論下列主題。
- “Rich Edit” 的 版本
- 不支援的編輯控件功能
- 豐富的編輯快速鍵
- 相關主題
Rich Edit 的版本
豐富編輯控件的原始規格Microsoft Rich Edit 1.0;目前的規格Microsoft Rich Edit 4.1。 每個版本的豐富編輯都是前一版本的超集,不同之處在於只有亞洲版本的 Microsoft Rich Edit 1.0 具有垂直文字選項。 建立豐富的編輯控件之前,您應該呼叫 LoadLibrary 函式,以確認已安裝哪個版本的 Microsoft Rich Edit。
下表顯示哪個 DLL 對應至哪個版本的 Rich Edit。 請注意,檔名並未從 2.0 版變更為 3.0 版。 這可讓 2.0 版升級至 3.0 版,而不會中斷現有的程式代碼。
Rich Edit 版本 | DLL | Window 類別 |
---|---|---|
1.0 | Riched32.dll | RICHEDIT_CLASS |
2.0 | Riched20.dll | RICHEDIT_CLASS |
3.0 | Riched20.dll | RICHEDIT_CLASS |
4.1 | Msftedit.dll | MSFTEDIT_CLASS |
Rich Edit Version 1.0
Microsoft Rich Edit 1.0 包含下列功能。
特徵 | 描述 |
---|---|
文字輸入和選擇 | 大部分是標準的(系統編輯控制)選擇和輸入文字。 選取列功能支援(選取列是每個段落左邊未標記的區域,點擊時會選取該段落)。 文字換行和自動選字選項。 單擊、雙擊和三擊選取。 |
ANSI(單位元組字元集(SBCS)和多位元組字元集(MBCS))編輯 | 不過,沒有 Unicode 編輯。 |
基本字元/段落格式設定屬性集 | 請參閱 CHARFORMAT 和 PARAFORMAT。 |
字元格式設定屬性 | 字型名稱和大小、粗體、斜體、純底線、刪除線、受保護、連結、位移和文字色彩。 |
段落格式設定屬性 | 起始縮排、右縮排、後續行位移、項目符號、對齊方式(左、置中、右)和標籤。 |
向前尋找 | 包含不區分大小寫和全字匹配選項。 |
訊息型介面 | 幾乎是系統編輯控制項訊息集的超集加上兩個介面,IRichEditOle 和 IRichEditOleCallback。 |
內嵌物件 | 需要以 IRichEditOle 和 IRichEditOleCallback 介面為基礎的用戶端共同作業。 |
右鍵功能表支援 | 使用 IRichEditOleCallback 介面。 |
拖曳編輯 | 支援拖放編輯。 |
通知 | WM_COMMAND 傳送至用戶端的訊息,以及一些其他訊息。 這是常用控制項通知的超集。 |
單階復原/重做 | 行為類似於系統編輯控制件。 選擇 復原 會反轉最後一個動作,然後該動作會變成新的 重做 動作。 |
簡單垂直文字 | (僅限亞洲版本)。 |
輸入法編輯器 (IME) 支援 | (僅限亞洲版本)。 |
WYSIWYG 編輯與印表機度量結合 | 特別是 Microsoft WordPad 需要這項功能。 |
剪下/複製/貼上/串流輸入/串流輸出 | 使用純文字 (CF_TEXT) 或 RTF 格式 ,且不含 物件。 |
C 程式代碼基底 | 程序代碼是以 C 撰寫,可提供穩固且多用途的基礎。 |
針對不同腳本的不同構建 | Microsoft Rich Edit 1.0 解決不同組建的當地語系化問題。 |
Rich Edit Version 2.0
Microsoft Rich Edit 2.0 併入數個額外的功能,例如支援 Unicode 和亞洲語言、多層級復原、元件物件模型 (COM) 介面,以及許多 UI 增強功能。
Microsoft Rich Edit 2.0 除了 Microsoft Rich Edit 1.0所提供的功能之外,還包含下列功能。
特徵 | 描述 |
---|---|
Unicode | Unicode 可簡化處理國際文字的工作。 不過,需要努力維持與現有非 Unicode 檔案的相容性,也就是能夠進行非 Unicode 純文字和 RTF 的雙向轉換。 |
一般國際支援 | 一般換行演算法(Kinsoku 規則的延伸),簡單字型連結,鍵盤字型切換。 |
亞洲支援 | IME 支援層級 2 (對話框) 和 3 (內嵌)。 |
向上尋找支援/向下尋找支援 | 支援向前和向後搜尋。 |
雙向支援 | 這包含在 Microsoft Rich Edit 2.1 中。 |
多層級復原 | 可延伸的復原架構可讓客戶端參與整個應用程式的復原模型。 |
Magellan 滑鼠支援 | 這是具有滾輪的滑鼠。 |
雙字體支援 | 當啟用的字型不適合目前的鍵盤時,鍵盤可以自動切換字型,例如 Times New Roman 中的日文字元。 |
智慧字體應用 | 字型變更要求不會將西方字型套用至亞洲字元。 |
改善的顯示 | 在同一行出現多個字型時,會使用螢幕外位圖。 例如,這樣可以確保單詞 "cool" 的最後一個字母不會被刪掉。 |
透明度支援 | 此外,在無視窗模式中。 |
系統選取色彩 | 用於選取文字。 |
自動 URL 辨識 | 可以檢查一些 URL 格式(例如 HTTP:) |
Microsoft Word 編輯 UI 相容性 | 選擇、游標鍵盤操作的語義。 |
Word 標準 EOP | 段落結尾標記(CR)也可以處理回車符號/換行符號(CR/LF)(回車符號,換行符號)。 |
純文本與豐富文本功能 | 單一字元格式和單一段落格式。 |
單行和多行控件 | 在第一個段落結尾截斷,而且沒有文字包裝。 |
快速鍵 | 支援快捷鍵。 |
密碼窗口樣式 | 密碼編輯控制項是透過 EM_GETPASSWORDCHAR 和 EM_SETPASSWORDCHAR提供。 |
可調整的架構 | 減少實例大小。 |
無視窗作業和介面 | 這是透過 ITextHost 和 ITextServices 介面來提供。 |
COM 雙重介面 | 文字物件模型 (TOM) 介面。 |
CHARFORMAT2 | 新增字型粗細、背景色彩、地區設定標識符、底線類型、上標和下標(除了位移外),已停用效果。 僅針對 RTF 往返,新增字母之間的空間、上方的 twip 大小給 kern 字元組、動畫文字類型、各種效果:字型陰影/外框、所有大寫字母、小上限、隱藏、浮凸、印記和修訂。 |
PARAFORMAT2 | 在文字和 Word 行距的前後新增空格。 針對僅限 RTF 往返,新增底紋粗細/樣式、編號起始/樣式/標籤、框線空格/寬度/側邊、製表符對齊/引導線、各種 Word 段落效果:從右至左段落、保持段落不分隔、保留下一行、分頁符號、取消行號、不控制孤行、不進行連字、並排。 |
更完整的 RTF 來回轉換 | Word 的所有 FormatFont 和 FormatParagraph 屬性。 |
程序代碼穩定性和穩定 | 範例:參數和對象驗證、函式不變、重新進入防護、物件穩定。 |
強式測試基礎結構 | 包括廣泛的回歸測試。 |
改善效能 | 較小的工作集、更快的載入和重新顯示時間等等。 |
C++程式代碼基底 | 此程序代碼是以 C++ 撰寫,可提供建置 Microsoft Rich Edit 3.0 的堅實基礎。 |
除了少數例外,Microsoft Rich Edit 2.0 使用與 Microsoft Rich Edit 1.0 相同的功能、結構和訊息。 不過,請注意下列差異:
Microsoft Rich Edit 1.0 視窗類別的名稱是 RichEdit。 Microsoft Rich Edit 2.0 同時具有 ANSI 和 Unicode 視窗類別,分別 RichEdit20A 和 RichEdit20W,。 若要指定適當的豐富編輯窗口類別,請使用 richedit.h 檔案根據 UNICODE 編譯旗標的定義所定義的RICHEDIT_CLASS常數。
在 Microsoft Rich Edit 2.0 中,如果您建立 Unicode 豐富編輯控件(預期 Unicode 文字訊息的控制項),則必須在任何傳送至控件的視窗訊息中指定 Unicode 數據。 同樣地,如果您建立 ANSI 豐富編輯控制件,則只會傳送 ANSI 或雙位元組字元集 (DBCS) 數據。 您可以使用 IsWindowUnicode 函式來判斷豐富編輯控制項是否使用 Unicode 文字訊息。 請注意,豐富的編輯 COM 介面會使用 Unicode 文字,除非它們遇到代碼頁自變數。
Microsoft Rich Edit 1.0 針對段落標記使用 CR/LF 字元組合。 Microsoft Rich Edit 2.0 只使用換行字元 ('\r')。 Microsoft Rich Edit 3.0 只使用回車符,但在這方面可以模擬 Microsoft Rich Edit 1.0。
Microsoft Rich Edit 2.0 引進了下列新訊息。
消息 描述 EM_AUTOURLDETECT 啟用或停用自動 URL 偵測。 EM_CANREDO 判斷重做佇列中是否有任何動作。 EM_GETIMECOMPMODE 擷取目前的輸入法編輯器 (IME) 模式。 EM_GETLANGOPTIONS 擷取用於輸入法和亞洲語言支援的選項。 EM_GETREDONAME 擷取重做佇列中下一個動作的類型名稱。 EM_GETTEXTMODE 取得文字模式或還原層級。 EM_GETUNDONAME 擷取復原佇列中下一個動作的類型名稱。 EM_REDO 在重做佇列中重做下一個動作。 EM_SETLANGOPTIONS 設定輸入法和亞洲語言支援的選項。 EM_SETTEXTMODE 設定文字模式或復原層級。 EM_SETUNDOLIMIT 設定復原佇列中的動作數目上限。 EM_STOPGROUPTYPING 停止將連續輸入的動作歸入目前的復原操作中。 Microsoft Rich Edit 2.0 引進了下列新結構。
結構 描述 CHARFORMAT2 包含字元格式設定的相關信息。 PARAFORMAT2 包含段落格式設定的相關信息。 下列訊息僅支援 Microsoft Rich Edit 1.0 的亞洲語言版本。 任何更新版本的 Rich Edit 都不支持它們。
Rich Edit 3.0 版
Microsoft Rich Edit 3.0 是單一、可調整、全球的 DLL,可在小型套件中提供與 Word 的高效能和相容性。 Microsoft Rich Edit 3.0 的新功能包括更豐富的文字、縮放、字型系結、更強大的 IME 支援,以及豐富的複雜腳本支援(雙向、索引和泰文)。
Microsoft Rich Edit 3.0 除了 Rich Edit 2.0所提供的功能之外,還包含下列功能。
功能/特色 | 描述 |
---|---|
縮放 | 縮放比例會以比例來指定。 |
段落編號 (單一層級) | 數位、上下字母或羅馬數位。 |
簡單數據表 | 可以刪除和插入列,但無法調整大小,也無法在儲存格內換行。 開啟進階印刷樣式(請參閱 EM_GETTYPOGRAPHYOPTIONS),Microsoft Rich Edit 3.0 可以對齊置中或向右排清的數據行,並包含小數點。 儲存格是由制表符模擬,因此文字制表符和換行符會由空白取代。 |
標準樣式和標題樣式 | 內建的一般樣式和 1 到 9 的標題樣式由 EM_SETPARAFORMAT 及 文字物件模型 (TOM)介面所支援。 |
更多底線類型 | 已新增虛線、虛線點、虛線點點和點狀底線。 |
底線著色 | 底線文字可以標記 15 個檔案選項的其中一個,以加底線色彩。 |
隱藏文字 | 以 CHARFORMAT2 屬性標示。 方便處理通常不應該顯示的資訊,使其可讀取並重新寫入檔案中。 |
更多預設快捷鍵 | 這些快速鍵的功能與 Word 中的快速鍵相同。 例如,歐洲輔色死鍵(僅限美國鍵盤)。 編號熱鍵(CTRL+L)會循環切換可用的編號選項,以項目符號開始。 |
HexToUnicode IME | 允許使用者使用熱鍵在十六進位和 Unicode 之間轉換。 |
智慧引號 | 此功能可透過 CTRL+ALT+' 來在美式鍵盤上切換開啟/關閉。 |
軟連字元 | 針對純文本,請使用 0xAD。 針對 RTF,請使用 -。 |
斜體游標 | 另外,當滑鼠游標移到 URL 上時,會變成手形。 |
進階印刷樣式選項 | Microsoft Rich Edit 3.0 可以使用進階字體排版選項用於斷行和顯示(請參閱 EM_GETTYPOGRAPHYOPTIONS)。 這個優雅的選項主要是為了方便處理複雜的文字(雙向文本、印度文字和泰文字)。 此外,簡單腳本也發生了許多改善。 範例包括:
|
複雜腳本支援 | Microsoft Rich Edit 3.0 支援雙向文字(含有阿拉伯文或希伯來文與其他文字混合)、印度文字(如天城文等印度語系)以及泰文文字。 為了支持這些複雜的腳本,會使用進階印刷樣式和 Uniscribe 元件。 |
字型系結 | Microsoft Rich Edit 3.0 會自動為明顯不屬於目前字元集戳記的字元選擇適當的字型。 這可藉由將字元集指派給文字流,並將字型與這些字元集產生關聯來完成。 如需詳細資訊,請參閱 字型系結。 |
字元集特定的純文字讀取/寫入選項 | 這允許使用一個字元集來讀取檔案,並使用不同的字元集寫入。 |
UTF-8 RTF | 建議用於剪切、複製和貼上操作。 此檔案格式比一般 RTF 更精簡、更快且與 Unicode 相容。 |
Microsoft Office 9 輸入法支援 (IME98) | 這個功能更強大的 IME 功能已分成獨立的模組。 功能包括:
|
主動輸入法管理員 (IMM) 支援 | 使用者可以叫用 Active IMM 物件,讓使用者在美國系統上輸入亞洲字元。 |
HexToUnicode 支援 | 使用者可以使用熱鍵,在十六進位表示法和 Unicode 之間轉換。 |
更多 RTF 來回轉換 | 從檔案讀取的 RTF 文字將會完整地寫回。 |
改善 1.0 兼容模式 | Microsoft Rich Edit 3.0 可以模擬 Microsoft Rich Edit 1.0 的行為。 例如,可以在 MBCS 與 Unicode 字元位置(cp)對應關係之間變更。 |
提高凍結管理 | 顯示可以在多次 API 呼叫期間凍結,然後解凍以顯示更新。 |
增強還原控制 | 復原可以暫停和繼續 (輸入法需求)。 |
增加/減少字型大小 | 將字型大小增加或減少為六個標準值之一(12、28、36、48、72 和 80 點)。 |
Rich Edit 4.1 版
Microsoft Rich Edit 4.1 的視窗類別MSFTEDIT_CLASS。 Microsoft Rich Edit 4.1 的新功能包括連字元、頁面旋轉和文字服務架構 (TSF) 支援。
Microsoft Rich Edit 4.1 除了 Rich Edit 3.0所提供的功能之外,還包含下列功能。
特徵 | 描述 |
---|---|
連字元 | 透過下列 API 支援連字元:HyphenateProc、EM_SETHYPHENATEINFO和 EM_GETHYPHENATEINFO。 |
頁面旋轉 | 透過 EM_SETPAGEROTATE 和 EM_GETPAGEROTATE支援從上到下和從下到上版面配置。 |
文字服務架構支援 |
|
其他輸入法支援 |
|
額外設定 EM_SETEDITSTYLE | 除了 TSF 設定之外,還有排除 IME、設定雙向文字流程、使用草稿模式字型等等的新設定。 |
其他 EM_SETCHARFORMAT 設定 | 新的旗標允許客戶端為特定的 LCID 或字元集設定預設字型和字型大小,設定控制元件的預設字型,以及防止鍵盤切換以匹配字型。 |
將輸入限制為 ANSI 文字 | 在 EM_SETTEXTMODE 中使用 TM_SINGLECODEPAGE 可防止 Unicode 輸入進入 Rich Edit 控制件。 |
不支援的 RTF 關鍵詞通知 | 當有不支援的 RTF 關鍵詞時,EN_LOWFIRTF 會警告應用程式。 |
其他語言支援 | 其他語言包括亞美尼亞文、迪維希、泰魯古等。 |
改善的表格支援 | 功能包括:在儲存格內換行、透過 RTF 改善處理,以及改善流覽。 |
ES_VERTICAL | 支援 ES_VERTICAL 視窗樣式。 |
WM_UNICHAR 支援 | 若要將 Unicode 字元傳送或張貼至 ANSI 視窗,請使用 WM_UNICHAR。 它相當於 WM_CHAR,但它使用 (UTF)-32。 |
不支援的編輯控制項功能
豐富的編輯控制項支援多行編輯控制元件的大部分功能,但不支援所有功能。 本節列出 不受豐富編輯控件支援 的編輯控件訊息和窗口樣式。
下列訊息會由編輯控件處理,但 並不會由豐富編輯控件 處理。
不支援的訊息 | 評論 |
---|---|
EM_FMTLINES | 不支援。 |
EM_GETHANDLE | 豐富文本編輯控制項不會將文字儲存為簡單的字元陣列。 |
EM_GETIMESTATUS | 不支援。 |
EM_GETMARGINS | 不支援。 |
EM_SETHANDLE | Rich Edit 控制項不會將文字儲存為簡單的字元陣列。 |
EM_SETIMESTATUS | 不支援。 |
EM_SETMARGINS | Microsoft Rich Edit 3.0 中支援。 |
EM_SETRECTNP | 不支援。 |
EM_SETTABSTOPS | 我們會改用 EM_SETPARAFORMAT 訊息。 Microsoft Rich Edit 3.0 中支援。 |
WM_CTLCOLOR | 會改用 EM_SETBKGNDCOLOR 訊息。 |
WM_GETFONT | 會改用 EM_GETCHARFORMAT 訊息。 |
下列視窗樣式會與多行編輯控制項搭配使用,但不適用於豐富的編輯控制項:ES_LOWERCASE、ES_UPPERCASE和 ES_OEMCONVERT。
富文本編輯快捷鍵
豐富的編輯控制項支援下列快捷鍵。
鑰匙 | 操作 | 評論 |
---|---|---|
Shift+Backspace | 在 bidi 鍵盤上產生 LRM/LRM | BiDi 特殊 |
Ctrl+Tab | 標籤 | |
Ctrl+Clear | 全部選取 | |
Ctrl+數字鍵盤 5 | 全部選取 | |
Ctrl+A | 全部選取 | |
Ctrl+E | 置中對齊 | |
Ctrl+J | 對齊方式 | |
Ctrl+R | 靠右對齊 | |
Ctrl+L | 靠左對齊 | |
Ctrl+C | 複製 | |
Ctrl+V | 貼上 | |
Ctrl+X | 切 | |
Ctrl+Z | 復原 | |
Ctrl+Y | 重做 | |
Ctrl+'+' (Ctrl+Shift+'=') | 上標 | |
Ctrl+'=' | 下標 | |
Ctrl+1 | 行距 = 1 行。 | |
Ctrl+2 | 行距 = 2 行。 | |
Ctrl+5 | 行距 = 1.5 行。 | |
Ctrl+' (單引號) | 輔色尖銳 | 按下快捷鍵之後,請按適當的字母(例如,a、e 或 u)。 這僅適用於英文、法文、德文、義大利文和西班牙文鍵盤。 |
Ctrl+' (墳墓) | 輔色墳墓 | 請參閱 Ctrl+' 批注。 |
Ctrl+~ (波浪符號) | 輔色波浪線 | 請參閱 Ctrl+' 批注。 |
Ctrl+;(分號) | 輔色 umlaut | 請參閱 Ctrl+' 批注。 |
Ctrl+Shift+6 | 輔色插入號(圓角) | 請參閱 Ctrl+' 批注。 |
Ctrl+、(逗號) | 輔色 cedilla | 請參閱 Ctrl+' 批注。 |
Ctrl+Shift+' (單引號) | 啟用智慧引號 | |
退格鍵 | 如果文字受到保護,請嗶聲,不要刪除它。 否則,請刪除前一個字元。 | |
Ctrl+Backspace | 刪除上一個字。 這會產生VK_F16程序代碼。 | |
F16 | 與 Backspace 相同。 | |
Ctrl+Insert | 複製 | |
Shift+Insert | 貼上 | |
插入 | 改寫 | DBCS 不會覆寫。 |
Ctrl+向左箭頭 | 將游標向左移動一個字。 | 在 bidi 鍵盤上,這取決於文字的方向。 |
Ctrl+右箭頭鍵 | 將游標向右移動一個字。 | 請參閱 Ctrl+向左鍵註解。 |
Ctrl+左移 | 靠左對齊 | 在 BiDi 檔中,這是由左至右閱讀順序。 |
Ctrl+右移 | 靠右對齊 | 在 BiDi 檔中,這是由右至左閱讀順序。 |
Ctrl+向上鍵 | 移至上方的行。 | |
Ctrl+向下鍵 | 移至下方的行。 | |
Ctrl+Home | 移至文件的開頭。 | |
Ctrl+End | 移至文件的結尾。 | |
Ctrl+Page Up(可以用來切換到上一個分頁或工作表) | 向上移動一頁。 | 如果在 SystemEditMode 和單行控件中,則不會執行任何動作。 |
Ctrl+下一頁 | 向下移動一頁。 | 請參閱 Ctrl+Page Up 批注。 |
Ctrl+Delete | 刪除下一個單字或選取的字元。 | |
Shift+Delete | 剪下選取的字元。 | |
Esc | 停止拖放。 | 執行拖放文字操作時。 |
Alt+Esc | 變更使用中的應用程式。 | |
Alt+X | 將插入點前面的 Unicode 十六進位值轉換為對應的 Unicode 字元。 | |
Alt+Shift+X | 將插入點前面的 Unicode 字元轉換為對應的 Unicode 十六進位值。 | |
Alt+0xxx (數字鍵盤) | 如果 xxx 大於 255,則插入 Unicode 值。 當 xxx 小於 256 時,會根據目前的鍵盤插入 ASCI 範圍文字。 | 必須輸入十進位值。 |
Alt+Shift+Ctrl+F12 | 十六進位轉換為 Unicode。 | 如果 Alt+X 已被用於其他用途。 |
Alt+Shift+Ctrl+F11 | 選取的文字會輸出至除錯程式視窗,並儲存至 %temp%\DumpFontInfo.txt。 | 只針對除錯(需要在 Win.ini中設定 Flag=8) |
Ctrl+Shift+A | 設定所有上限。 | |
Ctrl+Shift+L | Fiddle 項目符號樣式。 | |
Ctrl+Shift+右箭頭 | 增加字型大小。 | 字型大小在範圍 4pt-11pt 中增加 1 磅;在範圍 12pt-28pt 是增加 2 磅;從 28pt 到>、36pt 到>、48pt 到>、72pt 到>、80pt 會依次變化;在範圍 80pt-1630pt 中增加 10 磅;最大值為 1638 磅。 |
Ctrl+Shift+左箭頭 | 縮小字型大小。 | 請參閱 Ctrl+Shift+向右鍵的備註。 |
相關主題
-
概念