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) |