Bagikan melalui


Metode IOleInPlaceObjectWindowless::GetDropTarget (ocidl.h)

Mengambil antarmuka IDropTarget untuk objek aktif tanpa jendela di tempat yang mendukung seret dan letakkan.

Sintaks

HRESULT GetDropTarget(
  [out] IDropTarget **ppDropTarget
);

Parameter

[out] ppDropTarget

Penunjuk ke variabel penunjuk IDropTarget yang menerima penunjuk antarmuka ke objek tanpa jendela.

Nilai kembali

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

Menampilkan kode Deskripsi
E_NOTIMPL
Objek tanpa jendela tidak mendukung seret dan letakkan.

Keterangan

Objek berjendela mendaftarkan antarmuka IDropTarget-nya dengan memanggil fungsi RegisterDragDrop dan menyediakan handel jendelanya sebagai parameter. Mendaftarkan antarmuka IDropTarget memungkinkan objek untuk berpartisipasi dalam operasi seret dan letakkan. Karena tidak memiliki jendela saat aktif, objek tanpa jendela tidak dapat mendaftarkan antarmuka IDropTarget-nya . Oleh karena itu, ia tidak dapat secara langsung berpartisipasi dalam operasi seret dan letakkan tanpa dukungan dari kontainernya.

Peristiwa berikut terjadi selama operasi seret dan letakkan yang melibatkan objek tanpa jendela:

  • Kontainer mendaftarkan antarmuka IDropTarget sendiri melalui fungsi RegisterDragDrop .
  • Dalam implementasi kontainer dari metode IDropTarget::D ragEnter atau IDropTarget::D ragOver sendiri, kontainer mendeteksi apakah penunjuk mouse baru saja memasukkan objek yang disematkan.
  • Jika objek tidak aktif, kontainer memanggil metode IPointerInactive::GetActivationPolicy objek. Objek mengembalikan bendera POINTERINACTIVE_ACTIVATEONDRAG. Kontainer kemudian mengaktifkan objek di tempatnya. Jika objek sudah aktif, kontainer tidak harus melakukan langkah ini.
  • Setelah objek aktif, kontainer kemudian harus mendapatkan antarmuka IDropTarget objek.
  • Objek tanpa jendela yang ingin menjadi target penurunan masih mengimplementasikan antarmuka IDropTarget , tetapi tidak mendaftarkannya dan tidak mengembalikannya melalui panggilan ke IUnknown::QueryInterface. Sebagai gantinya, kontainer dapat memperoleh antarmuka ini dengan memanggil metode IOleInPlaceObjectWindowless::GetDropTarget objek. Objek mengembalikan penunjuk ke antarmuka IDropTarget sendiri jika ingin berpartisipasi dalam operasi seret dan letakkan. Kontainer dapat menyimpan penunjuk antarmuka ini untuk digunakan nanti. Misalnya, pada panggilan berikutnya ke metode IDropTarget::D ragEnter atau IDropTarget::D ragLeave kontainer dapat menggunakan pointer cache alih-alih memanggil metode GetDropTarget objek lagi.
  • Kontainer kemudian memanggil IDropTarget::D ragEnter objek dan meneruskan nilai yang dikembalikan untuk pdwEffect dari metode IDropTarget::D ragOver atau IDropTarget::D ragEnter sendiri. Sejak titik ini, kontainer meneruskan semua panggilan IDropTarget::D ragOver berikutnya ke objek tanpa jendela hingga mouse meninggalkan objek atau penurunan terjadi pada objek. Jika mouse meninggalkan objek, kontainer memanggil IDropTarget::D ragLeave objek lalu melepaskan antarmuka IDropTarget objek. Jika penurunan terjadi, kontainer meneruskan panggilan IDropTarget::D rop ke objek.
  • Akhirnya, kontainer di tempat menonaktifkan objek .
Objek dapat mengembalikan S_FALSE dari IDropTarget::D ragEnter sendiri untuk menunjukkan bahwa objek tidak menerima format data apa pun dalam objek data. Dalam hal ini, kontainer dapat memutuskan untuk menerima data untuk dirinya sendiri dan mengembalikan dwEffect yang sesuai dari metode IDropTarget::D ragEnter atau IDropTarget::D ragOver sendiri.

Objek yang mengembalikan S_FALSE dari IDropTarget::D ragEnter harus disiapkan untuk menerima panggilan berikutnya ke IDropTarget::D ragEnter tanpa IDropTarget::D ragLeave di antaranya. Memang, jika mouse masih melebihi objek yang sama selama panggilan berikutnya ke IDropTarget::D ragOver kontainer, kontainer dapat memutuskan untuk mencoba dan memanggil IDropTarget::D ragEnter lagi pada objek .

Catatan untuk Penelepon

Kontainer dapat menyimpan penunjuk ke antarmuka IDropTarget objek untuk digunakan nanti.

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 ocidl.h

Lihat juga

IDropTarget

IOleInPlaceObjectWindowless

IPointerInactive::GetActivationPolicy

RegisterDragDrop