Bagikan melalui


Metode IViewObjectEx::GetNaturalExtent (ocidl.h)

Menyediakan petunjuk ukuran dari kontainer untuk digunakan objek saat pengguna mengubah ukurannya.

Sintaks

HRESULT GetNaturalExtent(
  [in]  DWORD          dwAspect,
  [in]  LONG           lindex,
  [in]  DVTARGETDEVICE *ptd,
  [in]  HDC            hicTargetDev,
  [in]  DVEXTENTINFO   *pExtentInfo,
  [out] LPSIZEL        pSizel
);

Parameter

[in] dwAspect

Aspek gambar yang diminta. Ini bisa menjadi salah satu nilai berikut, yang ditentukan oleh enumerasi DVASPECT .

Nilai Makna
DVASPECT_CONTENT
Berikan representasi kontrol sehingga dapat ditampilkan sebagai objek yang disematkan di dalam kontainer. Nilai ini biasanya ditentukan untuk objek dokumen campuran. Presentasi dapat disediakan untuk layar atau printer.
DVASPECT_DOCPRINT
Berikan representasi kontrol pada layar seolah-olah dicetak ke printer menggunakan perintah Cetak dari menu File . Data yang dijelaskan dapat mewakili urutan halaman.
DVASPECT_ICON
Berikan representasi kontrol yang ikonik.
DVASPECT_THUMBNAIL
Berikan representasi gambar mini objek sehingga dapat ditampilkan dalam alat penjelajahan. Gambar mini sekitar 120 kali 120 piksel, bitmap independen perangkat 16 warna (disarankan) berpotensi dibungkus dalam metafile.

[in] lindex

Menunjukkan bagian objek yang menarik untuk operasi gambar. Interpretasinya bervariasi tergantung pada nilai dalam parameter dwAspect . Lihat enumerasi DVASPECT untuk informasi selengkapnya.

[in] ptd

Penunjuk ke struktur perangkat target yang menjelaskan perangkat tempat objek akan dirender. Jika NULL, tampilan harus dirender untuk perangkat target default (biasanya tampilan). Nilai selain NULL ditafsirkan bersama dengan hicTargetDev dan hdcDraw. Misalnya, jika hdcDraw menentukan printer sebagai konteks perangkat, parameter ptd menunjuk ke struktur yang menjelaskan perangkat printer tersebut. Data sebenarnya dapat dicetak jika hicTargetDev adalah nilai yang valid atau mungkin ditampilkan dalam mode pratinjau cetak jika hicTargetDev adalah NULL.

[in] hicTargetDev

Menentukan konteks informasi untuk perangkat target yang ditunjukkan oleh parameter ptd tempat objek dapat mengekstrak metrik perangkat dan menguji kemampuan perangkat. Jika ptd adalah NULL; objek harus mengabaikan nilai dalam parameter hicTargetDev .

[in] pExtentInfo

Arahkan ke struktur DVEXTENTINFO yang menentukan data ukuran.

[out] pSizel

Penunjuk untuk mengukur data yang dikembalikan oleh objek . Data ukuran yang dikembalikan diatur ke -1 untuk dimensi apa pun yang tidak disesuaikan. Artinya jika cx adalah -1 maka lebar tidak disesuaikan, jika cy -1 maka tinggi tidak disesuaikan. Jika E_FAIL dikembalikan yang menunjukkan tidak ada ukuran yang disesuaikan maka pSizel mungkin NULL.

Mengembalikan nilai

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

Menampilkan kode Deskripsi
E_FAIL
Metode ini tidak diimplementasikan untuk dwAspect yang ditentukan, atau ukurannya tidak disesuaikan.
E_NOTIMPL
Metode ini tidak diimplementasikan.

Keterangan

Ada dua pendekatan umum untuk mengubah ukuran kontrol. Pendekatan pertama memberikan tanggung jawab kontrol untuk ukuran itu sendiri; pendekatan kedua memberi kontainer tanggung jawab untuk mengukur kontrol. Pendekatan pertama disebut autosizing. Ada dua alternatif yang terlibat dalam pendekatan kedua: ukuran konten dan ukuran integral.

Metode IViewObjectEx::GetNaturalExtent mendukung konten dan ukuran integral. Dalam ukuran konten, kontainer meneruskan struktur DVEXTENTINFO ke objek tempat objek mengembalikan ukuran yang disarankan. Dalam ukuran integral, kontainer meneruskan ukuran yang disukai ke objek di DVEXTENTINFO, dan objek benar-benar menyesuaikan tingginya. Ukuran integral digunakan ketika pengguna mengikat karet ukuran baru dalam mode desain.

Ukuran otomatis biasanya terjadi dengan objek seperti kontrol Label yang mengubah ukuran jika properti ukuran otomatis diaktifkan dan teks terkait berubah. Ukuran otomatis ditangani secara berbeda tergantung pada status objek.

Jika objek tidak aktif, hal berikut ini terjadi:

  1. Objek memanggil IOleClientSite::RequestNewObjectLayout.
  2. Kontainer memanggil IOleObject::GetExtent dan mengambil jangkauan baru.
  3. Kontainer memanggil IOleObject::SetExtent dan menyesuaikan tingkat baru.
Jika objek aktif, hal berikut ini terjadi:
  1. Objek memanggil IOleInPlaceSite::OnPosRectChange untuk menentukan bahwa objek memerlukan pengubahan ukuran.
  2. Kontainer memanggil IOleInPlaceObject::SetObjectRects dan menentukan ukuran baru.

Persyaratan

   
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

IOleClientSite::RequestNewObjectLayout

IOleInPlaceObject::SetObjectRects

IOleInPlaceSite::OnPosRectChange

IOleObject::GetExtent

IOleObject::SetExtent

IViewObjectEx