Share via


Estrutura SHChangeUpdateImageIDList (shlobj_core.h)

[SHChangeUpdateImageIDList está disponível para uso nos sistemas operacionais especificados na seção Requisitos. Ele pode estar alterado ou indisponível em versões subsequentes.]

Armazena as informações usadas como parâmetros para SHUpdateImage em um formulário imitando um ITEMIDLIST para que possam ser usadas por SHChangeNotify.

Sintaxe

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

Membros

cb

Tipo: USHORT

O tamanho da estrutura em bytes.

iIconIndex

Tipo: int

O índice baseado em zero do ícone no arquivo especificado por szName. Obtenha esse valor chamando IExtractIcon::GetIconLocation e recuperando o valor apontado por piIndex.

iCurIndex

Tipo: int

O índice baseado em zero na lista de imagens do sistema do ícone que está sendo atualizado.

uFlags

Tipo: UINT

Sinalizadores que determinam os atributos de ícone. Obtenha esse valor chamando IExtractIcon::GetIconLocation e recuperando o valor apontado por pwFlags. Esses dois sinalizadores são relevantes para SHUpdateImage.

GIL_NOTFILENAME

O local não é um par de nome de arquivo/índice. Os aplicativos de chamada que decidem extrair o ícone do local devem chamar o método IExtractIcon::Extract deste objeto para obter as imagens de ícone desejadas.

GIL_SIMULATEDOC

O aplicativo de chamada deve criar um ícone de documento usando o ícone especificado.

dwProcessID

szName[MAX_PATH]

Tipo: WCHAR[MAX_PATH]

Uma cadeia de caracteres Unicode terminada em nulo que especifica o caminho totalmente qualificado do arquivo que contém o ícone. Obtenha esse valor chamando IExtractIcon::GetIconLocation e recuperando o valor apontado por szIconFile.

cbZero

Tipo: USHORT

Comentários

Este exemplo demonstra o uso de SHChangeUpdateImageIDList e SHChangeDWORDAsIDList por SHChangeNotify para imitar a função 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);
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho shlobj_core.h (inclua Shlobj.h)

Confira também

IExtractIcon::GetIconLocation

SHChangeDWORDAsIDList