Структура SHChangeUpdateImageIDList (shlobj_core.h)
[SHChangeUpdateImageIDList доступен для использования в операционных системах, указанных в разделе Требования. Он может быть изменен или недоступен в последующих версиях.]
Хранит сведения, используемые в качестве параметров в SHUpdateImage , в форме, имитируя ITEMIDLIST , чтобы их можно было использовать в SHChangeNotify.
Синтаксис
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. Получите это значение, вызвав метод IExtractIcon::GetIconLocation и получив значение, на которое указывает piIndex.
iCurIndex
Тип: int
Отсчитываемый от нуля индекс в списке образов системы обновляемого значка.
uFlags
Тип: UINT
Флаги, определяющие атрибуты значка. Получите это значение, вызвав метод IExtractIcon::GetIconLocation и получив значение, на которое указывает pwFlags. Эти два флага относятся к SHUpdateImage.
GIL_NOTFILENAME
Расположение не является парой имя файла/индекс. Вызывающие приложения, которые решили извлечь значок из расположения, должны вызывать метод IExtractIcon::Extract этого объекта для получения нужных изображений значков.
GIL_SIMULATEDOC
Вызывающее приложение должно создать значок документа, используя указанный значок.
dwProcessID
szName[MAX_PATH]
Тип: WCHAR[MAX_PATH]
Строка Юникода, завершающаяся нулевым значением, которая указывает полный путь к файлу со значком. Получите это значение, вызвав метод IExtractIcon::GetIconLocation и получив значение, на которое указывает szIconFile.
cbZero
Тип: USHORT
Комментарии
В этом примере показано использование SHChangeUpdateImageIDList и SHChangeDWORDAsIDListв SHChangeNotify для имитации функции 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) |