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 .
[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 |
---|---|
|
Metode ini tidak diimplementasikan untuk dwAspect yang ditentukan, atau ukurannya tidak disesuaikan. |
|
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:
- Objek memanggil IOleClientSite::RequestNewObjectLayout.
- Kontainer memanggil IOleObject::GetExtent dan mengambil jangkauan baru.
- Kontainer memanggil IOleObject::SetExtent dan menyesuaikan tingkat baru.
- Objek memanggil IOleInPlaceSite::OnPosRectChange untuk menentukan bahwa objek memerlukan pengubahan ukuran.
- 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