Поделиться через


Структура 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)

См. также раздел

IExtractIcon::GetIconLocation

SHChangeDWORDAsIDList