Estructura SHChangeUpdateImageIDList (shlobj_core.h)
[SHChangeUpdateImageIDList está disponible para su uso en los sistemas operativos especificados en la sección Requisitos. Puede modificarse o no estar disponible en versiones posteriores.
Almacena la información usada como parámetros para SHUpdateImage en un formulario imitando un ITEMIDLIST para que SHChangeNotify los pueda usar.
Sintaxis
typedef struct _SHChangeUpdateImageIDList {
USHORT cb;
int iIconIndex;
int iCurIndex;
UINT uFlags;
DWORD dwProcessID;
WCHAR szName[MAX_PATH];
USHORT cbZero;
} SHChangeUpdateImageIDList, *LPSHChangeUpdateImageIDList;
Miembros
cb
Tipo: USHORT
El tamaño de la estructura en bytes.
iIconIndex
Tipo: int
Índice de base cero del icono en el archivo especificado por szName. Obtenga este valor llamando a IExtractIcon::GetIconLocation y recuperando el valor al que apunta piIndex.
iCurIndex
Tipo: int
Índice de base cero en la lista de imágenes del sistema del icono que se está actualizando.
uFlags
Tipo: UINT
Marcas que determinan los atributos de icono. Obtenga este valor llamando a IExtractIcon::GetIconLocation y recuperando el valor al que apunta pwFlags. Estas dos marcas son relevantes para SHUpdateImage.
GIL_NOTFILENAME
La ubicación no es un par de nombre de archivo o índice. Las aplicaciones que deciden extraer el icono de la ubicación deben llamar al método IExtractIcon::Extract de este objeto para obtener las imágenes de icono deseadas.
GIL_SIMULATEDOC
La aplicación que realiza la llamada debe crear un icono de documento con el icono especificado.
dwProcessID
szName[MAX_PATH]
Tipo: WCHAR[MAX_PATH]
Cadena Unicode terminada en null que especifica la ruta de acceso completa del archivo que contiene el icono. Obtenga este valor llamando a IExtractIcon::GetIconLocation y recuperando el valor al que apunta szIconFile.
cbZero
Tipo: USHORT
Comentarios
En este ejemplo se muestra el uso de SHChangeUpdateImageIDList y SHChangeDWORDAsIDList de SHChangeNotify para imitar la función 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 | Value |
---|---|
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Encabezado | shlobj_core.h (incluya Shlobj.h) |