Bagikan melalui


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
S_OK
Berhasil
E_PENDING
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)