共用方式為


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
E_NOTIMPL
不支持單位
S_FALSE
因其他原因而失敗。

備註

如果範圍在插入點) (變質,此方法會嘗試移動插入點 CountUnits。

如果範圍為非質化且 Count 大於零,則此方法會在結尾字元位置折疊範圍、將產生的插入點向前移動至 單位 界限,如果尚未位於一個) ,則 (,然後嘗試移動 Count - 1 單位向前移動。 如果範圍為非產生, 且 Count 小於零,則這個方法會在開始字元位置折疊範圍、將產生的插入點往回移動至 單位 界限,如果尚未位於一個) ,則 (,然後嘗試移動 |Count|- 1 單位回溯。 因此,在這兩種情況下,不論移至折疊之後的 Unit 的開始或結尾,將非產生範圍折疊到插入點,都會計算為 Unit

ITextRange::Move 方法會傳回 pDelta = 實際移動的 Unit數目。 這個方法永遠不會將插入點移到這個範圍的本文之外。 如果 CountUnit會在本文開頭之前移動插入點,則會移至本文開頭,並據以設定 pDelta 。 同樣地,如果 CountUnit 將它移至本文結尾,則會移至本文結尾。

ITextRange::Move 方法的運作方式類似於UI導向的MoveLeftMoveRight方法,不同之處在於動作的方向是邏輯而非幾何。 也就是說,使用 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 物件,則可以使用 MoveLeftMoveRight 等方法。

如果 Unit 指定 tomCharacter) 的字元 (,則 Text 物件模型 (TOM) 使用 Unicode 字元集。 若要在 Unicode 與多位元組字元集之間轉換 ,MultiByteToWideCharWideCharToMultiByte 函式提供在匯入和導出時,在 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::MoveStartITextRange::MoveEnd 方法,分別移動範圍 Start 或 End position CountUnits。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 tom.h
Dll Msftedit.dll

另請參閱

概念

ITextRange

MoveEnd

MoveLeft

MoveRight

MoveStart

MultiByteToWideChar

開啟

其他資源

參考

文字物件模型

WideCharToMultiByte