Bagikan melalui


Metode IOleInPlaceSiteWindowless::ScrollRect (ocidl.h)

Memungkinkan objek untuk menggulir area dalam gambar aktif di tempatnya pada layar.

Sintaks

HRESULT ScrollRect(
  [in] INT     dx,
  [in] INT     dy,
  [in] LPCRECT pRectScroll,
  [in] LPCRECT pRectClip
);

Parameter

[in] dx

Jumlah untuk menggulir sumbu x.

[in] dy

Jumlah untuk menggulir sumbu y.

[in] pRectScroll

Persegi panjang untuk menggulir, dalam koordinat klien dari jendela yang berisi. Nilai NULL menunjukkan objek lengkap.

[in] pRectClip

Persegi panjang untuk diklip. Hanya piksel yang menggulir ke persegi ini yang digambar. Piksel yang menggulir keluar tidak. Jika parameter ini NULL, persegi panjang tidak diklip.

Nilai kembali

Metode ini mengembalikan S_OK pada keberhasilan.

Keterangan

Metode ini harus memperhitungkan fakta bahwa pemanggil mungkin transparan dan mungkin ada objek yang tumpang tindih atau transparan. Lihat Catatan untuk Pelaksana di bawah ini untuk saran tentang algoritma yang dapat digunakan metode ini.

Catatan untuk Pelaksana

Kontainer dapat menerapkan metode ini dengan berbagai cara. Namun, semuanya harus mempertanggungjawabkan kemungkinan bahwa objek yang meminta pengguliran mungkin transparan atau mungkin tidak memiliki latar belakang yang solid. Kontainer juga harus memperhitungkan bahwa mungkin ada objek yang tumpang tindih.

Cara paling sederhana untuk mengimplementasikan metode ini hanya terdiri dari menggambar ulang persegi panjang untuk menggulir.

Penyempurnaan tambahan untuk implementasi sederhana ini adalah menggunakan fungsi ScrollDC ketika objek yang meminta gulir buram, objek memiliki latar belakang yang solid, dan tidak ada objek yang tumpang tindih.

Implementasi yang lebih canggih dapat menggunakan prosedur berikut:

  • Periksa apakah objek buram dan memiliki latar belakang yang solid, menggunakan IViewObjectEx::GetViewStatus. Jika tidak, cukup batalkan persegi panjang untuk menggulir. Penyempurnaan tambahan adalah memeriksa apakah persegi panjang gulir sepenuhnya berada di wilayah buram objek transparan sebagian.
  • Dapatkan konteks perangkat jendela.
  • Klip bagian buram dari objek yang tumpang tindih yang dikembalikan oleh IViewObjectEx::GetRect.
  • Terakhir, panggil fungsi ScrollDC .
  • Gambar ulang bagian transparan yang sebelumnya tidak valid dari objek yang tumpang tindih.
Terlepas dari persegi panjang pengguliran dan kliping, hanya piksel yang terkandung dalam persegi panjang situs objek yang akan dicat. Area yang tidak diungkap oleh operasi pengguliran tidak valid dan segera digambar ulang, sebelum metode ini kembali.

Semua penggalian ulang yang dihasilkan oleh metode ini harus terjadi secara sinkron sebelum metode ini kembali.

Metode ini harus secara otomatis menyembunyikan tanda sisipan selama operasi pengguliran dan harus memindahkan tanda sisipan dengan jumlah gulir jika berada di dalam persegi klip.

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

IOleInPlaceSiteWindowless

IViewObjectEx::GetRect

IViewObjectEx::GetViewStatus