다음을 통해 공유


SHChangeUpdateImageIDList 구조체(shlobj_core.h)

[SHChangeUpdateImageIDList 는 요구 사항 섹션에 지정된 운영 체제에서 사용할 수 있습니다. 이후 버전에서는 변경되거나 제공되지 않을 수 있습니다.]

SHChangeNotify에서 사용할 수 있도록 ITEMIDLIST를 모방하는 형식으로 SHUpdateImage에 대한 매개 변수로 사용되는 정보를 저장합니다.

구문

typedef struct _SHChangeUpdateImageIDList {
  USHORT cb;
  int    iIconIndex;
  int    iCurIndex;
  UINT   uFlags;
  DWORD  dwProcessID;
  WCHAR  szName[MAX_PATH];
  USHORT cbZero;
} SHChangeUpdateImageIDList, *LPSHChangeUpdateImageIDList;

멤버

cb

형식: USHORT

구조체의 크기(바이트)입니다.

iIconIndex

형식: int

szName으로 지정된 파일에 있는 아이콘의 인덱스(0부터 시작)입니다. IExtractIcon::GetIconLocation을 호출하고 piIndex에서 가리키는 값을 검색하여 이 값을 가져옵니다.

iCurIndex

형식: int

업데이트할 아이콘의 시스템 이미지 목록에 있는 인덱스(0부터 시작)입니다.

uFlags

형식: UINT

아이콘 특성을 결정하는 플래그입니다. IExtractIcon::GetIconLocation을 호출하고 pwFlags가 가리키는 값을 검색하여 이 값을 가져옵니다. 이러한 두 플래그는 SHUpdateImage와 관련이 있습니다.

GIL_NOTFILENAME

위치가 파일 이름/인덱스 쌍이 아닙니다. 위치에서 아이콘을 추출하기로 결정한 애플리케이션을 호출하려면 이 개체의 IExtractIcon::Extract 메서드를 호출하여 원하는 아이콘 이미지를 가져와야 합니다.

GIL_SIMULATEDOC

호출하는 애플리케이션은 지정된 아이콘을 사용하여 문서 아이콘을 만들어야 합니다.

dwProcessID

szName[MAX_PATH]

형식: WCHAR[MAX_PATH]

아이콘이 포함된 파일의 정규화된 경로를 지정하는 null로 끝나는 유니코드 문자열입니다. IExtractIcon::GetIconLocation을 호출하고 szIconFile에서 가리키는 값을 검색하여 이 값을 가져옵니다.

cbZero

형식: USHORT

설명

이 예제에서는 SHChangeNotify에서 SHChangeUpdateImageIDListSHChangeDWORDAsIDList를 사용하여 SHUpdateImage 함수를 모방하는 방법을 보여 줍니다.

void MyUpdateImage(LPCWSTR pszHashItem, int iIndex, UINT uFlags, int iImageIndex)
{
    SHChangeUpdateImageIDList rgPidl;
    SHChangeDWORDAsIDList rgDWord;
    int cchLen;
    USHORT *pcb;

    // Validate parameters: iImageIndex must be a valid system image list value.
    if (iImageIndex < 0)
    {
        return;
    }

    // Validate parameters: pszHashItem must not exceed MAX_PATH in length
    cchLen = lstrlenW(pszHashItem);
    if (cchLen >= MAX_PATH)
    {
        return;
    }

    // Load SHChangeUpdateImageIDList
    rgPidl.dwProcessID = GetCurrentProcessId();
    rgPidl.iIconIndex = iIndex;
    rgPidl.iCurIndex = iImageIndex;
    rgPidl.uFlags = uFlags;
    lstrcpynW(rgPidl.szName, pszHashItem, MAX_PATH);
    pcb = &rgPidl.szName[cchLen+1];
    
    // Set the size of the first element
    rgPidl.cb = (USHORT)((BYTE*)pcb - (BYTE*)rgPidl); 
    
    // Terminate the "ITEMIDLIST"
    *pcb = 0; 

    // Load SHChangeDWORDAsIDList
    rgDWord.cb = (USHORT)FIELD_OFFSET(SHChangeDWORDAsIDList, cbZero);
    rgDWord.dwItem1 = iImageIndex;
    rgDWord.dwItem2 = 0;
    rgDWord.cbZero = 0;

    // Parameters are now in the form that SHCNE_UPDATEIMAGE can accept
    SHChangeNotify(SHCNE_UPDATEIMAGE, SHCNF_IDLIST, &rgDWord, &rgPidl);
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
머리글 shlobj_core.h(Shlobj.h 포함)

추가 정보

IExtractIcon::GetIconLocation

SHChangeDWORDAsIDList