Partager via


Structure SHChangeUpdateImageIDList (shlobj_core.h)

[SHChangeUpdateImageIDList est disponible pour une utilisation dans les systèmes d’exploitation spécifiés dans la section Configuration requise. Il peut être modifié ou indisponible dans les versions suivantes.]

Stocke les informations utilisées comme paramètres dans SHUpdateImage dans un formulaire imitant un ITEMIDLIST afin qu’elles puissent être utilisées par SHChangeNotify.

Syntaxe

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

Membres

cb

Type : USHORT

Taille de la structure, en octets.

iIconIndex

Type : int

Index de base zéro de l’icône dans le fichier spécifié par szName. Obtenez cette valeur en appelant IExtractIcon ::GetIconLocation et en récupérant la valeur pointée par piIndex.

iCurIndex

Type : int

Index de base zéro dans la liste d’images système de l’icône en cours de mise à jour.

uFlags

Type : UINT

Indicateurs qui déterminent les attributs de l’icône. Obtenez cette valeur en appelant IExtractIcon ::GetIconLocation et en récupérant la valeur pointée par pwFlags. Ces deux indicateurs sont pertinents pour SHUpdateImage.

GIL_NOTFILENAME

L’emplacement n’est pas une paire nom de fichier/index. L’appel des applications qui décident d’extraire l’icône à partir de l’emplacement doit appeler la méthode IExtractIcon ::Extract de cet objet pour obtenir les images d’icône souhaitées.

GIL_SIMULATEDOC

L’application appelante doit créer une icône de document à l’aide de l’icône spécifiée.

dwProcessID

szName[MAX_PATH]

Type : WCHAR[MAX_PATH]

Chaîne Unicode terminée par un caractère Null qui spécifie le chemin complet du fichier qui contient l’icône. Pour obtenir cette valeur, appelez IExtractIcon ::GetIconLocation et récupérez la valeur pointée par szIconFile.

cbZero

Type : USHORT

Remarques

Cet exemple illustre l’utilisation de SHChangeUpdateImageIDList et SHChangeDWORDAsIDList par SHChangeNotify pour imiter la fonction 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);
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête shlobj_core.h (inclure Shlobj.h)

Voir aussi

IExtractIcon ::GetIconLocation

SHChangeDWORDAsIDList