다음을 통해 공유


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)

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

SIIGBF_ICONONLY(0x00000004)

아이콘만 반환하고 썸네일은 반환하지 않습니다.

SIIGBF_THUMBNAILONLY(0x00000008)

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

SIIGBF_INCACHEONLY(0x00000010)

디스크에 대한 액세스를 허용하지만 캐시된 항목만 검색할 수 있습니다. 사용 가능한 경우 캐시된 미리 보기가 반환됩니다. 캐시된 축소판 그림을 사용할 수 없는 경우 캐시된 instance별 아이콘을 반환하지만 축소판 그림이나 아이콘을 추출하지는 않습니다.

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 스레드에서 추출을 수행하면 안 됩니다.

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

요구 사항

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