Bagikan melalui


ITextRange::Metode pemindahan (tom.h)

Memindahkan titik penyisipan ke depan atau mundur dari jumlah unit yang ditentukan. Jika rentang tidak terdegenerasi, rentang diciutkan ke titik penyisipan di kedua ujungnya, tergantung pada Hitungan, lalu dipindahkan.

Sintaks

HRESULT Move(
  long Unit,
  long Count,
  long *pDelta
);

Parameter

Unit

Jenis: panjang

Unit yang akan digunakan. Nilai defaultnya adalah tomCharacter. Untuk informasi tentang nilai lain, lihat diskusi di ITextRange.

Count

Jenis: panjang

Jumlah Unityang akan dilewati. Nilai default adalah 1. Jika Count lebih besar dari nol, gerakan diteruskan—menjelang akhir cerita—dan jika Hitungan kurang dari nol, gerakan mundur—menuju awal. Jika Count adalah nol, rentang tidak berubah.

pDelta

Jenis: panjang*

Jumlah aktual Units titik penyisipan bergerak melewati. Penunjuk bisa NULL. Untuk informasi lebih lanjut, lihat bagian Keterangan.

Mengembalikan nilai

Jenis: HRESULT

Metode mengembalikan nilai HRESULT . Jika metode berhasil memindahkan titik penyisipan, metode akan mengembalikan S_OK. Jika metode gagal, metode mengembalikan salah satu kode kesalahan berikut. Untuk informasi selengkapnya tentang kode kesalahan COM, lihat Penanganan Kesalahan di COM.

Menampilkan kode Deskripsi
E_NOTIMPL
Unit tidak didukung.
S_FALSE
Kegagalan karena alasan lain.

Keterangan

Jika rentang berdegenerasi (titik penyisipan), metode ini mencoba memindahkan titik penyisipan CountUnits.

Jika rentang tidak terdegenerasi dan Hitungan lebih besar dari nol, metode ini menciutkan rentang pada posisi karakter akhir, memindahkan titik penyisipan yang dihasilkan ke depan ke batas Unit (jika belum berada di satu), lalu mencoba memindahkan Hitungan - 1 Unitke depan. Jika rentang tidak terdegenerasi dan Hitungan kurang dari nol, metode ini menciutkan rentang pada posisi karakter awal, memindahkan titik penyisipan yang dihasilkan ke belakang ke batas Unit (jika belum berada di satu), lalu mencoba memindahkan |Hitungan| - 1 Unitmundur. Dengan demikian, dalam kedua kasus, menciutkan rentang nondegenerasi ke titik penyisipan, baik berpindah ke awal atau akhir Unit setelah ciutkan, dihitung sebagai Unit.

Metode ITextRange::Move mengembalikan pDelta = jumlah Unityang benar-benar dipindahkan. Metode ini tidak pernah memindahkan titik penyisipan di luar cerita rentang ini. Jika CountUnits akan memindahkan titik penyisipan sebelum awal cerita, itu dipindahkan ke awal cerita dan pDelta diatur sesuai. Demikian pula, jika CountUnits akan memindahkannya di luar akhir cerita, itu dipindahkan ke akhir cerita.

Metode ITextRange::Move berfungsi mirip dengan metode MoveLeft dan MoveRight berorientasi UI, kecuali bahwa arah gerakan logis daripada geometris. Artinya, dengan ITextRange::Pindahkan arah menuju akhir atau menuju awal cerita. Tergantung pada bahasanya, bergerak menuju akhir cerita bisa bergerak ke kiri atau ke kanan. Untuk merasakan Hitungan, tekan Ctrl+Panah Kanan dalam dokumen Microsoft Word untuk berbagai pilihan. Dalam teks kiri-ke-kanan, penekanan tombol ini berperilaku sama dengan Move(tomWord, 1), dan MoveRight(tomWord, 1). Hitung sesuai dengan berapa kali Anda menekan Ctrl+Panah Kanan.

Misalnya, jika Anda menekan Ctrl+Panah Kanan untuk pilihan yang diperlihatkan di kedua gambar berikut, Anda berakhir dengan titik penyisipan pada posisi karakter 8, karena perintah ini menciutkan pilihan pada posisi karakter akhirnya (masing-masing 7 dan 8) dan berpindah ke batas tomWord berikutnya.

Posisi karakter untuk string teks Posisi karakter untuk string teks Pilihan pertama tidak menyertakan spasi kosong pada posisi karakter 7, sehingga Ctrl+Panah Kanan bergerak melewati spasi ke batas tomWord pada posisi karakter 8. Posisi karakter akhir sudah berada di batas tomWord untuk pilihan kedua, sehingga Ctrl+Panah Kanan hanya menciutkan pilihan pada batas tersebut. Demikian pula, Ctrl+Panah Kiri, yang untuk teks ini bertindak seperti Move(tomWord, -1), dan MoveLeft(tomWord, 1) menciutkan pilihan pertama pada posisi karakter 5, yang sudah berada di batas tomWord , jadi tidak ada lagi gerakan yang terjadi. Tetapi Ctrl+Panah Kiri menciutkan pilihan kedua pada posisi karakter 4 lalu berpindah ke nol, karena itu adalah batas tomWord berikutnya ke arah gerakan.

Argumen pengembalian, pDelta, diatur sama dengan jumlah Unityang dipindahkan titik penyisipan termasuk satu Unit untuk menciutkan rentang yang tidak terdegenerasi dan memindahkannya ke batas Unit . Jadi, jika tidak ada gerakan dan tidak ada ciutkan yang terjadi, seperti ketika rentang adalah titik penyisipan di akhir cerita, pDelta diatur sama dengan nol. Pendekatan ini berguna untuk mengontrol perulangan program yang memproses seluruh cerita.

Dalam kedua kasus yang disebutkan di atas, panggilan Move(tomWord, 1) menetapkan pDelta sama dengan 1 karena rentang diciutkan. Demikian pula, panggilan Move(tomWord, -1) menetapkan pDelta sama dengan -1 untuk kedua kasus. Menciutkan, dengan atau tanpa memindahkan bagian dari Unit ke batas Unit , dihitung sebagai Unit yang dipindahkan.

Arah gerakan mengacu pada pengurutan karakter logis di penyimpanan backing teks biasa. Pendekatan ini menghindari masalah pemesanan geometris, seperti kiri versus kanan dan atas versus bawah, dalam perangkat lunak internasional. Metode geometris seperti itu masih diperlukan di mesin edit, tentu saja, karena keyboard memiliki tombol panah untuk memanggilnya. Jika rentangnya benar-benar objek ITextSelection , maka metode seperti MoveLeft dan MoveRight dapat digunakan.

Jika Unit menentukan karakter (tomCharacter), Model Objek Teks (TOM) menggunakan kumpulan karakter Unicode. Untuk mengonversi antara unicode dan karakter multibyte mengatur fungsi MultiByteToWideChar dan WideCharToMultiByte memberikan cara mudah untuk mengonversi antara set karakter Unicode dan multibyte pada impor dan ekspor. Untuk informasi selengkapnya, lihat Buka. Dalam koneksi ini, penggunaan umpan kembali/baris pengangkutan (CR/LF) untuk memisahkan paragraf sama bermasalahnya dengan kumpulan karakter byte ganda (DBCS). Metode UI ITextSelection mencadangkan CR/LF seolah-olah itu adalah karakter tunggal, tetapi metode ITextRange::Move menghitung CR/LF sebagai dua karakter. Lebih baik menggunakan satu karakter sebagai pemisah paragraf, yang dalam TOM diwakili oleh pengembalian karakter, meskipun karakter pemisah paragraf Unicode, 0x2029, diterima. Secara umum, mesin TOM harus mendukung CR/LF, carriage return (CR), line feed (LF), tab vertikal, form feed, dan 0x2029. Microsoft Rich Edit 2.0 juga mendukung CR/CR/LF untuk kompatibilitas mundur.

Lihat juga metode ITextRange::MoveStart dan ITextRange::MoveEnd, yang masing-masing memindahkan rentang UnitJumlah Posisi Awal atau Akhir.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header tom.h
DLL Msftedit.dll

Lihat juga

Konseptual

ITextRange

MoveEnd

MoveLeft

MoveRight

MoveStart

MultiByteToWideChar

Buka

Sumber Daya Lain

Referensi

Model Objek Teks

WideCharToMultiByte