Fungsi DoDragDrop (ole2.h)
Melakukan operasi seret dan lepas OLE.
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 |
---|---|
|
Operasi seret dan letakkan OLE berhasil. |
|
Operasi seret dan letakkan OLE dibatalkan. |
|
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.)
- Fungsi DoDragDrop menentukan jendela di bawah lokasi kursor saat ini. Kemudian memeriksa untuk melihat apakah jendela ini adalah target penurunan yang valid.
- 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 .
- 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.
-
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.
-
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.
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 |