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에서 SHChangeUpdateImageIDList 및 SHChangeDWORDAsIDList를 사용하여 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 포함) |