SHChangeUpdateImageIDList-Struktur (shlobj_core.h)
[SHChangeUpdateImageIDList ist für die Verwendung in den Betriebssystemen verfügbar, die im Abschnitt Anforderungen angegeben sind. Sie kann in nachfolgenden Versionen geändert oder nicht verfügbar sein.]
Speichert die als Parameter für SHUpdateImage verwendeten Informationen in einer Form, die eine ITEMIDLIST nachahmt, damit sie von SHChangeNotify verwendet werden können.
Syntax
typedef struct _SHChangeUpdateImageIDList {
USHORT cb;
int iIconIndex;
int iCurIndex;
UINT uFlags;
DWORD dwProcessID;
WCHAR szName[MAX_PATH];
USHORT cbZero;
} SHChangeUpdateImageIDList, *LPSHChangeUpdateImageIDList;
Member
cb
Typ: USHORT
Die Größe der Struktur in Bytes.
iIconIndex
Typ: int
Der nullbasierte Index des Symbols in der durch szName angegebenen Datei. Rufen Sie diesen Wert ab, indem Sie IExtractIcon::GetIconLocation aufrufen und den Wert abrufen, auf den von piIndex verwiesen wird.
iCurIndex
Typ: int
Der nullbasierte Index in der Systemimageliste des zu aktualisierenden Symbols.
uFlags
Typ: UINT
Flags, die die Symbolattribute bestimmen. Rufen Sie diesen Wert ab, indem Sie IExtractIcon::GetIconLocation aufrufen und den Wert abrufen, auf den pwFlags verweist. Diese beiden Flags sind für SHUpdateImage relevant.
GIL_NOTFILENAME
Der Speicherort ist kein Dateinamen-Index-Paar. Beim Aufrufen von Anwendungen, die das Symbol aus dem Speicherort extrahieren möchten, muss die IExtractIcon::Extract-Methode dieses Objekts aufgerufen werden, um die gewünschten Symbolbilder abzurufen.
GIL_SIMULATEDOC
Die aufrufende Anwendung sollte mithilfe des angegebenen Symbols ein Dokumentsymbol erstellen.
dwProcessID
szName[MAX_PATH]
Typ: WCHAR[MAX_PATH]
Eine Unicode-Zeichenfolge mit Null-Endung, die den vollqualifizierten Pfad der Datei angibt, die das Symbol enthält. Rufen Sie diesen Wert ab, indem Sie IExtractIcon::GetIconLocation aufrufen und den Wert abrufen, auf den von szIconFile verwiesen wird.
cbZero
Typ: USHORT
Hinweise
In diesem Beispiel wird die Verwendung von SHChangeUpdateImageIDList und SHChangeDWORDAsIDList von SHChangeNotify veranschaulicht, um die SHUpdateImage-Funktion nachzuahmen.
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);
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Kopfzeile | shlobj_core.h (einschließlich Shlobj.h) |