ITextRange::Move 方法 (tom.h)
向前或向後移動插入點指定的單位數。 如果範圍是非產生的,範圍會折疊至任一端的插入點,視 計數而定,然後移動。
語法
HRESULT Move(
long Unit,
long Count,
long *pDelta
);
參數
Unit
類型: long
要使用的單位。 預設值為 tomCharacter。 如需其他值的相關信息,請參閱 ITextRange 中的討論。
Count
類型: long
要移動的 單位數目。 預設值為 1。 如果 Count 大於零,則動作會往前-向本文結尾,如果 Count 小於零,則動作會向後移動。 如果 Count 為零,則範圍不會變更。
pDelta
類型: long*
插入點所移動的實際 單位數目。 指標可以是 NULL。 如需詳細資訊,請參閱<備註>一節。
傳回值
類型: HRESULT
方法會傳回 HRESULT 值。 如果方法成功移動插入點,則會傳回 S_OK。 如果方法失敗,它會傳回下列其中一個錯誤碼。 如需 COM 錯誤碼的詳細資訊,請參閱 COM 中的錯誤處理。
傳回碼 | Description |
---|---|
|
不支持單位。 |
|
因其他原因而失敗。 |
備註
如果範圍在插入點) (變質,此方法會嘗試移動插入點 CountUnits。
如果範圍為非質化且 Count 大於零,則此方法會在結尾字元位置折疊範圍、將產生的插入點向前移動至 單位 界限,如果尚未位於一個) ,則 (,然後嘗試移動 Count - 1 單位向前移動。 如果範圍為非產生, 且 Count 小於零,則這個方法會在開始字元位置折疊範圍、將產生的插入點往回移動至 單位 界限,如果尚未位於一個) ,則 (,然後嘗試移動 |Count|- 1 單位回溯。 因此,在這兩種情況下,不論移至折疊之後的 Unit 的開始或結尾,將非產生範圍折疊到插入點,都會計算為 Unit。
ITextRange::Move 方法會傳回 pDelta = 實際移動的 Unit數目。 這個方法永遠不會將插入點移到這個範圍的本文之外。 如果 CountUnit會在本文開頭之前移動插入點,則會移至本文開頭,並據以設定 pDelta 。 同樣地,如果 CountUnit 將它移至本文結尾,則會移至本文結尾。
ITextRange::Move 方法的運作方式類似於UI導向的MoveLeft和MoveRight方法,不同之處在於動作的方向是邏輯而非幾何。 也就是說,使用 ITextRange::移動 方向是往結尾或往本文開頭。 視語言而定,往本文結尾移動可能會移至左側或右邊。 若要瞭解 Count 的風格,請在 Microsoft Word 檔中按 Ctrl+向右鍵,以取得各種選取專案。 在由左至右的文字中,這個按鍵的行為與 和 MoveRight(tomWord, 1)
相同Move(tomWord, 1)
。
計數 會對應到您按下 Ctrl+向右鍵的次數。
例如,如果您針對下列兩個圖中顯示的選取專案按 Ctrl+向右鍵,則最後會在字元位置 8 加上插入點,因為此命令會分別折疊其結尾字元位置 (7 和 8 的選取範圍,並分別) 並移至下一個 tomWord 界限。
一個選取範圍不包含字元位置 7 的空格,因此 Ctrl+向右鍵會將空格移至字元位置 8 的 tomWord 界限。 結尾字元位置已經位於第二個選取範圍的 tomWord 界限,因此 Ctrl+向右鍵只會折疊該界限上的選取範圍。 同樣地,Ctrl+向左鍵,此文字的作用類似Move(tomWord, -1)
,並 MoveLeft(tomWord, 1)
折疊字元位置 5 的第一個選取範圍,該位置已經位於 tomWord 界限,因此不會再發生任何動作。 但是 Ctrl+向左鍵會折疊字元位置 4 的第二個選取範圍,然後移至零,因為這是動作方向的下一個 tomWord 界限。
return 自變數 pDelta 會設定為等於插入點移動的 Unit數目,包括一個 單位 來折疊非質範圍,並將它移至 Unit 界限。 因此,如果沒有動作且沒有折迭發生,如同範圍是本文結尾的插入點時, pDelta 會設定為零。 此方法適用於控制處理整個本文的程序迴圈。
在這兩種情況下,呼叫 Move(tomWord, 1)
集合 pDelta 等於 1,因為範圍已折疊。 同樣地,這兩種情況下呼叫 Move(tomWord, -1)
pDelta 等於 -1。 在 單位 的一部分移至 單位 界限的情況下,折疊或未移動單位界限,會計算為移動的 單位 。
動作的方向是指純文本支援存放區中的邏輯字元順序。 這種方法可避免國際軟體中的幾何順序問題,例如左與右和向上和向下。 當然,編輯引擎仍然需要這類幾何方法,因為鍵盤具有箭頭鍵來叫用它們。 如果範圍實際上是 ITextSelection 物件,則可以使用 MoveLeft 和 MoveRight 等方法。
如果 Unit 指定 tomCharacter) 的字元 (,則 Text 物件模型 (TOM) 使用 Unicode 字元集。 若要在 Unicode 與多位元組字元集之間轉換 ,MultiByteToWideChar 和 WideCharToMultiByte 函式提供在匯入和導出時,在 Unicode 與多位元組字元集之間轉換的簡單方式。 如需詳細資訊,請參閱 開啟。 在此連線中,使用歸位字元/換行字元/換行字元 (CR/LF) 來分隔段落,與 DBCS) (雙位元組字元集一樣有問題。 ITextSelection UI 方法會備份在CR/LF上,就像是單一字元一樣,但 ITextRange::Move 方法會將CR/LFs視為兩個字元。 使用單一字元做為段落分隔符,在 TOM 中會以字元傳回來表示,雖然接受 Unicode 段落分隔符0x2029。 一般而言,TOM 引擎應該支援CR/LF、歸位字元 (CR) 、換行字元 (LF) 、垂直索引卷標、表單摘要和0x2029。 Microsoft Rich Edit 2.0 也支援 CR/CR/LF 以進行回溯相容性。
另請參閱 ITextRange::MoveStart 和 ITextRange::MoveEnd 方法,分別移動範圍 Start 或 End position CountUnits。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | tom.h |
Dll | Msftedit.dll |
另請參閱
概念
其他資源
參考