IExtractImage::Metode GetLocation (shobjidl_core.h)
Mendapatkan jalur ke gambar yang akan diekstrak.
Sintaks
HRESULT GetLocation(
[out] LPWSTR pszPathBuffer,
[in] DWORD cch,
[out] DWORD *pdwPriority,
[in] const SIZE *prgSize,
[in] DWORD dwRecClrDepth,
[in, out] DWORD *pdwFlags
);
Parameter
[out] pszPathBuffer
Jenis: LPWSTR
Buffer yang digunakan untuk mengembalikan deskripsi jalur. Nilai ini mengidentifikasi gambar sehingga Anda dapat menghindari pemuatan yang sama lebih dari sekali.
[in] cch
Jenis: DWORD
Ukuran pszPathBuffer dalam karakter.
[out] pdwPriority
Jenis: DWORD*
Tidak digunakan.
Microsoft Windows XP dan yang lebih lama: Pointer yang digunakan untuk mengembalikan prioritas item ketika bendera IEIFLAG_ASYNC diatur dalam pdwFlags. Parameter ini tidak boleh NULL. Fungsi gagal jika parameter ini NULL, apakah bendera IEIFLAG_ASYNC diatur atau tidak.
Parameter ini biasanya digunakan untuk menunjukkan jumlah waktu yang diperlukan untuk mengekstrak gambar. Jika Anda ingin kontrol lebih besar atas urutan di mana gambar mini diekstrak, Anda dapat menentukan beberapa tingkat prioritas, hingga 32 bit. Selama nilai bilangan bulat yang ditetapkan ke tingkat prioritas yang berbeda meningkat dari prioritas rendah ke tinggi, angka aktual yang Anda gunakan tidak penting. Mereka hanya digunakan untuk menentukan urutan di mana gambar akan diekstraksi. Ada tiga tingkat prioritas standar:
IEI_PRIORITY_MAX
Prioritas maksimum.
IEI_PRIORITY_MIN
Prioritas minimum.
IEIT_PRIORITY_NORMAL
Prioritas normal.
Microsoft Windows XP. Tidak digunakan.
[in] prgSize
Jenis: ukuran* const
Penunjuk ke struktur SIZE dengan lebar dan tinggi gambar yang diinginkan. Tidak boleh NULL.
[in] dwRecClrDepth
Jenis: DWORD
Kedalaman warna yang direkomendasikan dalam satuan bit per piksel. Tidak boleh NULL.
[in, out] pdwFlags
Jenis: DWORD*
Bendera yang menentukan bagaimana gambar akan ditangani. Nilai harus satu atau beberapa hal berikut ini:
IEIFLAG_ASPECT
Digunakan untuk meminta objek untuk menggunakan rasio aspek yang disediakan. Jika bendera ini diatur, persegi panjang dengan rasio aspek yang diinginkan akan diteruskan dalam prgSize. Bendera ini tidak dapat digunakan dengan IEIFLAG_SCREEN.
IEIFLAG_ASYNC
Tidak digunakan. Gambar mini selalu diekstrak pada utas latar belakang.
Microsoft Windows XP dan yang lebih lama. Digunakan untuk menanyakan apakah instans ini mendukung ekstraksi asinkron (free-threaded). Jika bendera ini diatur oleh aplikasi panggilan, IExtractImage::GetLocation dapat mengembalikan E_PENDING, menunjukkan ke aplikasi panggilan untuk mengekstrak gambar pada utas lain. Jika E_PENDING dikembalikan, prioritas item dikembalikan dalam pdwPriority.
IEIFLAG_CACHE
Tidak didukung.
Windows XP dan yang lebih lama: Atur oleh objek untuk menunjukkan bahwa objek tidak akan menyimpan cache gambar. Jika bendera ini dikembalikan, Shell akan menyimpan salinan gambar dalam cache.
IEIFLAG_GLEAM
Tidak didukung.
IEIFLAG_NOBORDER (0x0100)
Tidak didukung.
IEIFLAG_NOSTAMP (0x0080)
Tidak didukung.
IEIFLAG_OFFLINE
Digunakan untuk memberi tahu objek untuk hanya menggunakan konten lokal untuk penyajian.
IEIFLAG_ORIGSIZE
Versi 5.0. Digunakan untuk memberi tahu objek untuk merender gambar ke perkiraan ukuran yang diteruskan dalam prgSize, tetapi memangkasnya jika perlu.
IEIFLAG_QUALITY (0x0200)
Diteruskan ke metode IExtractImage::Extract untuk menunjukkan bahwa gambar berkualitas lebih tinggi diminta.
Jika bendera ini tidak diatur, IExtractImage mengambil gambar mini yang disematkan jika file memilikinya, tidak peduli ukuran permintaan pengguna. Misalnya, jika file adalah 2000x2000 piksel tetapi gambar mini yang disematkan hanya 100x100 piksel dan pengguna tidak mengatur bendera ini, namun meminta gambar mini piksel 1000x1000, IExtractImage selalu mengembalikan gambar mini piksel 100x100. Ini secara desain, karena IExtractImage tidak meningkatkan skala. Jika gambar mini yang lebih besar diinginkan (biasanya gambar mini yang disematkan adalah 160x160), bendera ini harus diatur.
IEIFLAG_REFRESH (0x0400)
Dikembalikan oleh objek untuk menunjukkan bahwa Gambar Mini Refresh harus ditampilkan pada menu pintasan item.
IEIFLAG_SCREEN
Digunakan untuk memberi tahu objek untuk dirender seolah-olah untuk layar. Bendera ini tidak dapat digunakan dengan IEIFLAG_ASPECT.
Nilai kembali
Jenis: HRESULT
Metode ini dapat mengembalikan kode kesalahan yang ditentukan COM atau salah satu hal berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Berhasil |
|
Windows XP dan yang lebih lama: Jika bendera IEIFLAG_ASYNC diatur, nilai pengembalian ini digunakan untuk menunjukkan kepada Shell bahwa objek berulir bebas. |
Keterangan
Microsoft Windows XP dan yang lebih lama: Metode ini mengembalikan jalur ke gambar dan menentukan bagaimana gambar harus dirender. IExtractImage::GetLocation free-threaded—yaitu, mendukung Multithreaded Apartment Model (MTA)— oleh karena itu dapat ditempatkan di utas latar belakang. Objek juga harus mengekspos antarmuka IRunnableTask , sehingga aplikasi panggilan dapat memulai dan menghentikan proses ekstraksi sesuai kebutuhan.
Anda harus mengembalikan gambar yang pas dalam batas yang ditentukan oleh prgSize. Dengan sistem Windows 2000 dan yang lebih baru, Anda dapat mengatur IEIFLAG_ORIGSIZE untuk menggunakan objek yang tidak memiliki rasio aspek standar, dan akan ditampilkan dengan benar. Anda tidak perlu mengisi bagian persegi panjang yang tidak digunakan. Jika Anda mencoba menggunakan gambar rasio aspek non-standar dengan versi Shell yang lebih lama, gambar tersebut akan direntangkan agar pas dengan persegi panjang prgSize . Tergantung pada seberapa banyak rasio aspek berbeda dari apa yang ditentukan, gambar mungkin terdistorsi dengan buruk.
Persyaratan
Klien minimum yang didukung | Windows 2000 Professional, Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | shobjidl_core.h (termasuk Shobjidl.h) |
DLL | Shell32.dll (versi 4.70 atau yang lebih baru) |