Bagikan melalui


Fungsi DoDragDrop (ole2.h)

Melakukan operasi seret dan lepas OLE.

Catatan Anda harus memanggil OleInitialize sebelum memanggil fungsi ini.
 

Sintaks

HRESULT DoDragDrop(
  [in]  LPDATAOBJECT pDataObj,
  [in]  LPDROPSOURCE pDropSource,
  [in]  DWORD        dwOKEffects,
  [out] LPDWORD      pdwEffect
);

Parameter

[in] pDataObj

Penunjuk ke antarmuka IDataObject pada objek data yang berisi data yang diseret.

[in] pDropSource

Arahkan ke implementasi antarmuka IDropSource , yang digunakan untuk berkomunikasi dengan sumber selama operasi seret.

[in] dwOKEffects

Efek yang diizinkan sumber dalam operasi seret dan letakkan OLE. Yang paling signifikan adalah apakah itu mengizinkan pemindahan. Parameter dwOKEffect dan pdwEffect mendapatkan nilai dari enumerasi DROPEFFECT . Untuk daftar nilai, lihat DROPEFFECT.

[out] pdwEffect

Penunjuk ke nilai yang menunjukkan bagaimana operasi seret dan letakkan OLE memengaruhi data sumber. Parameter pdwEffect diatur hanya jika operasi tidak dibatalkan.

Nilai kembali

Fungsi ini mengembalikan S_OK pada keberhasilan. Nilai lain yang mungkin termasuk yang berikut ini.

Menampilkan kode Deskripsi
DRAGDROP_S_DROP
Operasi seret dan letakkan OLE berhasil.
DRAGDROP_S_CANCEL
Operasi seret dan letakkan OLE dibatalkan.
E_UNSPEC
Terjadi kesalahan yang tidak terduga.

Keterangan

Jika Anda mengembangkan aplikasi yang dapat bertindak sebagai sumber data untuk operasi seret dan letakkan OLE, Anda harus memanggil DoDragDrop saat mendeteksi bahwa pengguna telah memulai operasi seret dan letakkan OLE.

Fungsi DoDragDrop memasukkan perulangan di mana ia memanggil berbagai metode di antarmuka IDropSource dan IDropTarget . (Untuk operasi seret dan letakkan yang berhasil, aplikasi yang bertindak sebagai sumber data juga harus menerapkan IDropSource, sementara aplikasi target harus mengimplementasikan IDropTarget.)

  1. Fungsi DoDragDrop menentukan jendela di bawah lokasi kursor saat ini. Kemudian memeriksa untuk melihat apakah jendela ini adalah target penurunan yang valid.
  2. Jika jendela adalah target penurunan yang valid, DoDragDrop memanggil IDropTarget::D ragEnter. Metode ini menyediakan kode efek yang menunjukkan apa yang akan terjadi jika penurunan benar-benar terjadi. Untuk daftar efek penurunan yang valid, lihat enumerasi DROPEFFECT .
  3. DoDragDrop memanggil IDropSource::GiveFeedback dengan kode efek sehingga antarmuka sumber drop dapat memberikan umpan balik visual yang sesuai kepada pengguna. Pointer pDropSource yang diteruskan ke DoDragDrop menentukan antarmuka IDropSource yang sesuai.
  4. DoDragDrop melacak gerakan kursor mouse dan mengubah status tombol keyboard atau mouse.
    • Jika pengguna keluar dari jendela, DoDragDrop memanggil IDropTarget::D ragLeave.
    • Jika mouse memasuki jendela lain, DoDragDrop menentukan apakah jendela tersebut adalah target drop yang valid lalu memanggil IDropTarget::D ragEnter untuk jendela tersebut.
    • Jika mouse bergerak tetapi tetap berada dalam jendela yang sama, DoDragDrop memanggil IDropTarget::D ragOver.
  5. Jika ada perubahan dalam status tombol keyboard atau mouse, DoDragDrop memanggil IDropSource::QueryContinueDrag dan menentukan apakah akan melanjutkan seret, untuk menghilangkan data, atau membatalkan operasi berdasarkan nilai yang dikembalikan.
    • Jika nilai yang dikembalikan S_OK, DoDragDrop terlebih dahulu memanggil IDropTarget::D ragOver untuk melanjutkan operasi. Metode ini mengembalikan nilai efek baru dan DoDragDrop kemudian memanggil IDropSource::GiveFeedback dengan efek baru sehingga umpan balik visual yang sesuai dapat diatur. Untuk daftar efek penurunan yang valid, lihat enumerasi DROPEFFECT . IDropTarget::D ragOver dan IDropSource::GiveFeedback dipasangkan sehingga saat mouse bergerak melintasi target penurunan, pengguna diberi umpan balik terbaru tentang posisi mouse.
    • Jika nilai yang dikembalikan DRAGDROP_S_DROP, DoDragDrop memanggil IDropTarget::D rop. Fungsi DoDragDrop mengembalikan kode efek terakhir ke sumber, sehingga aplikasi sumber dapat melakukan operasi yang sesuai pada data sumber, misalnya, memotong data jika operasi adalah pemindahan.
    • Jika nilai yang dikembalikan DRAGDROP_S_CANCEL, fungsi DoDragDrop memanggil IDropTarget::D ragLeave.
DoDragDrop tidak mendukung dukungan seret dan lepas saat Anda menangani sentuhan atau input pena.

Untuk mendukung sentuhan atau input pena, jangan panggil DoDragDrop dari handler sentuh Anda. Sebagai gantinya, panggil DoDragDrop dari handler Anda untuk pesan mouse yang disintesis sistem saat input sentuh.

Aplikasi dapat mengidentifikasi pesan yang disintesis dengan memanggil fungsi GetMessageExtraInfo . Untuk informasi selengkapnya tentang menggunakan GetMessageExtraInfo untuk membedakan antara input mouse dan input Windows Touch, lihat Pemecahan Masalah Aplikasi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header ole2.h
Pustaka Ole32.lib
DLL Ole32.dll

Lihat juga

IDropSource