다음을 통해 공유


IShellItemImageFactory::GetImage 메서드(shobjidl_core.h)

IShellItem나타내는 HBITMAP 가져옵니다. 기본 동작은 썸네일을 로드하는 것입니다. 현재 IShellItem대한 썸네일이 없으면 항목의 아이콘에 대한 HBITMAP 검색합니다. 현재 캐시되지 않은 경우 미리 보기 또는 아이콘이 추출됩니다.

통사론

HRESULT GetImage(
  [in]  SIZE    size,
  [in]  SIIGBF  flags,
  [out] HBITMAP *phbm
);

매개 변수

[in] size

형식: SIZE

받을 이미지의 크기를 지정하는 구조체입니다.

[in] flags

형식: siIGBF

다음 중 하나 이상:

SIIGBF_RESIZETOFIT(0x00000000)

필요에 따라 비트맵을 축소하여 가로 세로 비율을 유지합니다.

SIIGBF_BIGGERSIZEOK(0x00000001)

반환된 이미지 자체를 확장하려는 경우 호출자가 전달합니다. 예를 들어 호출자가 아이콘 크기를 80x80으로 전달하면 96x96 축소판 그림이 반환될 수 있습니다. 호출자가 이미지를 확장해야 하는 경우 이 작업을 성능 최적화로 사용할 수 있습니다. IShellItemImageFactory 셸 구현은 GDI 스트레치 블릿을 수행합니다. 호출자가 해당 메커니즘을 통해 제공되는 것보다 더 높은 품질의 이미지 스트레치를 원하는 경우 이 플래그를 전달하고 스트레치 자체를 수행해야 합니다.

SIIGBF_MEMORYONLY(0x00000002)

항목이 이미 메모리에 있는 경우에만 반환합니다. 항목이 캐시된 경우에도 디스크에 액세스하지 마세요. 이미 캐시된 아이콘만 반환하며 항목에 캐시되지 않은 인스턴스별 아이콘이 있는 경우 클래스별 아이콘으로 대체될 수 있습니다. 썸네일이 캐시되더라도 썸네일을 검색하려면 항상 디스크에 액세스해야 하므로 GetImageSIIGBF_MEMORYONLY전달하지 않고 UI 스레드에서 호출해서는 안 됩니다.

SIIGBF_ICONONLY(0x00000004)

썸네일이 아니라 아이콘만 반환합니다.

SIIGBF_THUMBNAILONLY(0x00000008)

썸네일만 반환하고 아이콘은 반환하지 않습니다. 모든 항목에 미리 보기가 있는 것은 아니므로 SIIGBF_THUMBNAILONLY 이러한 경우 메서드가 실패합니다.

SIIGBF_INCACHEONLY(0x00000010)

디스크에 대한 액세스를 허용하지만 캐시된 항목만 검색할 수 있습니다. 사용 가능한 경우 캐시된 썸네일을 반환합니다. 캐시된 썸네일을 사용할 수 없는 경우 캐시된 인스턴스별 아이콘을 반환하지만 썸네일 또는 아이콘을 추출하지는 않습니다.

SIIGBF_CROPTOSQUARE(0x00000020)

Windows 8도입되었습니다. 필요한 경우 비트맵을 사각형으로 자른다.

SIIGBF_WIDETHUMBNAILS(0x00000040)

Windows 8도입되었습니다. 비트맵을 0.7 가로 세로 비율로 늘이고 자입니다.

SIIGBF_ICONBACKGROUND(0x00000080)

Windows 8도입되었습니다. 아이콘을 반환하는 경우 연결된 앱의 등록된 배경색을 사용하여 배경을 그립니다.

SIIGBF_SCALEUP(0x00000100)

Windows 8도입되었습니다. 필요한 경우 높이와 너비가 지정된 크기에 맞도록 비트맵을 늘입니다.

[out] phbm

형식: HBITMAP*

이 메서드가 성공적으로 반환될 때 검색된 비트맵의 핸들을 받는 값에 대한 포인터입니다. 더 이상 필요하지 않은 경우 DeleteObject 통해 검색된 리소스를 해제하는 것은 호출자의 책임입니다.

반환 값

형식: HRESULT

이 메서드가 성공하면 S_OK반환됩니다. 그렇지 않으면 HRESULT 오류 코드를 반환합니다.

발언

아이콘 추출에는 시간이 오래 걸릴 수 있습니다. 일반적으로 이 메서드는 해당 스레드가 응답하지 않도록 UI 스레드에서 호출해서는 안 됩니다. SIIGBF_INCACHEONLY 플래그를 설정하는 경우 UI 스레드에서 IShellItemImageFactory::GetImage 호출할 수 있습니다. 그러나 캐시에서 이미지를 찾을 수 없는 경우 호출 애플리케이션은 이미지를 추출하기 위해 백그라운드 스레드를 시작할 준비를 해야 합니다. UI 스레드에서 추출을 수행해서는 안 됩니다.

이 메서드를 사용하는 방법에 대한 전체 예제는 Using Image Factory 샘플을 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 shobjidl_core.h(Shobjidl.h 포함)