Formazione
Come implementare gestori di sovrapposizione icone
I gestori di sovrapposizione delle icone sono oggetti COM (Component Object Model) in-process, implementati come DLL. Esportano un'interfaccia oltre a IUnknown: IShellIconOverlayIdentifier. Questa interfaccia include tre metodi: IShellIconOverlayIdentifier::GetOverlayInfo, IShellIconOverlayIdentifier::GetPrioritye IShellIconOverlayIdentifier::IsMemberOf.
Il metodoGetOverlayInfoviene chiamato prima durante l'inizializzazione. Il metodo restituisce il percorso completo del file che contiene l'immagine di sovrapposizione dell'icona e il relativo indice in base zero all'interno del file. Shell aggiunge quindi l'immagine all'elenco di immagini di sistema. Le sovrimpressioni delle icone possono essere contenute in qualsiasi tipo di file standard, tra cui .exe, .dlle .ico.
Al termine dell'inizializzazione, shell chiama GetOverlayInfo quando deve visualizzare la sovrimpressione dell'icona del gestore. Il metodo deve restituire lo stesso nome file e lo stesso indice eseguito durante l'inizializzazione. Anche se la Shell usa l'immagine memorizzata nella cache nell'elenco di immagini di sistema anziché caricare l'immagine dal file, una sovrapposizione dell'icona è ancora identificata dal nome file e dall'indice.
Il metodoGetPriorityviene chiamato solo durante l'inizializzazione. Assegna un valore di priorità alla sovrimpressione dell'icona del gestore. Il valore può variare da zero a 100, dove 100 è la priorità più bassa. Lo scopo di questo valore di priorità è aiutare shell a risolvere il conflitto che si verifica quando vengono specificate più sovrimpressioni di icone per un singolo oggetto. Shell usa innanzitutto un set interno di regole per determinare la sovrimpressione dell'icona con priorità più alta. Se queste regole non risolvono il conflitto, i valori assegnati alle sovrapposizioni delle icone da GetPriority determinano la priorità.
Il valore di priorità impostato da GetPriority non è un modo affidabile per risolvere i conflitti tra gestori di sovrapposizione delle icone non correlati. Non è possibile consentire al gestore di determinare quali valori di priorità usano altri gestori. In genere, è necessario impostare il valore su zero. Tuttavia, il valore di priorità è utile quando sono stati implementati due o più gestori di sovrimpressione icona che possono richiedere un'icona di sovrapposizione per lo stesso oggetto. Impostando i valori di priorità in modo appropriato, è possibile specificare quale delle sovrimpressioni dell'icona richiesta verrà visualizzata.
Shell chiama il metodo IsMemberOf per determinare se visualizzare l'overlay dell'icona di un gestore per un oggetto specifico. Shell specifica l'oggetto passandone il nome al metodo . Se un gestore desidera visualizzare la sovrapposizione dell'icona, IsMemberOf restituisce S_OK. In caso contrario, restituisce S_FALSE.
I gestori di sovrimpressione delle icone sono in genere destinati a funzionare con un determinato gruppo di file. Un esempio tipico è un tipo di file , identificato da un'estensione di file specifica. Un gestore di sovrimpressione icona può richiedere una sovrimpressione di icone per tutti i file del tipo di file. Alcuni gestori richiedono una sovrapposizione di icone solo se un file del tipo di file si trova in uno stato specifico. Tuttavia, i gestori di sovrapposizione delle icone sono liberi di richiedere la sovrapposizione dell'icona per qualsiasi oggetto scelto.
Risorse aggiuntive
Documentazione
-
Sovrimpressioni icone e icone - Win32 apps
Sovrimpressioni icone e icone
-
Come registrare gestori di sovrapposizione delle icone - Win32 apps
Oltre alla normale registrazione COM (Component Object Model), è necessario completare i passaggi seguenti per registrare i gestori di sovrapposizione delle icone.
-
Come creare gestori di icone - Win32 apps
Viene descritto come creare un gestore per le assegnazioni di icone personalizzate.