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)

Weitere Informationen

IExtractIcon::GetIconLocation

SHChangeDWORDAsIDList