Struttura SHChangeUpdateImageIDList (shlobj_core.h)
[SHChangeUpdateImageIDList è disponibile per l'uso nei sistemi operativi specificati nella sezione Requisiti. Potrebbe essere modificato o non disponibile nelle versioni successive.]
Archivia le informazioni usate come parametri per SHUpdateImage in un modulo che simula un ITEMIDLIST in modo che possano essere usate da SHChangeNotify.
Sintassi
typedef struct _SHChangeUpdateImageIDList {
USHORT cb;
int iIconIndex;
int iCurIndex;
UINT uFlags;
DWORD dwProcessID;
WCHAR szName[MAX_PATH];
USHORT cbZero;
} SHChangeUpdateImageIDList, *LPSHChangeUpdateImageIDList;
Members
cb
Tipo: USHORT
Dimensioni della struttura, in byte.
iIconIndex
Tipo: int
Indice in base zero dell'icona nel file specificato da szName. Ottenere questo valore chiamando IExtractIcon::GetIconLocation e recuperando il valore a cui punta piIndex.
iCurIndex
Tipo: int
Indice in base zero nell'elenco di immagini di sistema dell'icona da aggiornare.
uFlags
Tipo: UINT
Flag che determinano gli attributi dell'icona. Ottenere questo valore chiamando IExtractIcon::GetIconLocation e recuperando il valore a cui punta pwFlags. Questi due flag sono rilevanti per SHUpdateImage.
GIL_NOTFILENAME
Il percorso non è una coppia nome file/indice. La chiamata di applicazioni che decidono di estrarre l'icona dalla posizione deve chiamare il metodo IExtractIcon::Extract dell'oggetto per ottenere le immagini dell'icona desiderate.
GIL_SIMULATEDOC
L'applicazione chiamante deve creare un'icona del documento usando l'icona specificata.
dwProcessID
szName[MAX_PATH]
Tipo: WCHAR[MAX_PATH]
Stringa Unicode con terminazione Null che specifica il percorso completo del file che contiene l'icona. Ottenere questo valore chiamando IExtractIcon::GetIconLocation e recuperando il valore a cui punta szIconFile.
cbZero
Tipo: USHORT
Commenti
In questo esempio viene illustrato l'uso di SHChangeUpdateImageIDList e SHChangeDWORDAsIDList by SHChangeNotify per simulare la funzione 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);
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Intestazione | shlobj_core.h (includere Shlobj.h) |