Migliori pratiche per i gestori di menu di scelta rapida e verbi multipli
Questo argomento è organizzato come segue:
Migliori Pratiche
Il verbo statico è un verbo più semplice da implementare e offre funzionalità avanzate. È consigliabile implementare un verbo usando uno dei metodi del verbo statico.
Procedure consigliate per le implementazioni dei verbi
L'elenco seguente rappresenta le procedure consigliate per le implementazioni dei verbi:
- Scegli sempre la forma verbale più semplice che soddisfi le tue esigenze.
- Se possibile, usare un metodo statico di verbo.
- Non eseguire operazioni a elevato utilizzo di risorse o operazioni di I/O nel thread dell'interfaccia utente. Sia IShellExtInit::Initialize che IContextMenu::QueryContextMenu devono essere molto conservativi nel lavoro che eseguono. IContextMenu::InvokeCommand deve essere eseguito in un altro processo oppure è necessario creare un nuovo thread per evitare di bloccare il chiamante.
- Prefiggere i verbi con il nome del fornitore di software indipendente (ISV) come segue,
ISVName.verb
. L'uso di nomi non qualificati può causare conflitti con più ISV che hanno scelto lo stesso nome verbo. - Usare sempre un ProgID specifico dell'applicazione. Poiché alcuni tipi di elementi non usano questo mapping, è necessario specificare nomi univoci del fornitore.
- Posizionare l'interfaccia utente rispetto al metodo di richiamo, ma non eseguire su un thread del chiamante.
- Non accettare il valore restituito S_OK per i verbi canonici passati al metodo IContextMenu::InvokeCommand. Così facendo, si verifica un errore nel richiamare l'implementazione del verbo reale e viene restituito un codice di errore per i verbi canonici. Se non si supportano verbi canonici, viene restituito un errore quando viene rilevato un valore HIWORD(lpVerb) diverso da zero.
- Evitare l'uso di rundll32.exe come host per il verbo.
- Quando si implementa IContextMenu::QueryContextMenu, assicurarsi di restituire il numero di verbi aggiunti al menu tramite il valore HRESULT usando la macro ResultFromShort.
- Se si esegue la registrazione in una delle voci di chiave del Registro di sistema seguenti, prestare attenzione e assicurarsi di registrare il gestore nel tipo più specifico per ridurre le possibili conseguenze impreviste:
- HKEY_CLASSES_ROOT\*
- HKEY_CLASSES_ROOT\AllFileSystemObjects
- HKEY_CLASSES_ROOT\Folder
- HKEY_CLASSES_ROOT\Directory
- Impostare la chiave MayChangeDefaultMenu solo se si prevede di dover modificare il verbo predefinito nel menu di scelta rapida. Se il gestore non modifica il verbo predefinito, non è consigliabile impostare questa chiave perché in questo modo il sistema carica la DLL inutilmente.
- Ridurre al minimo il lavoro eseguito in IShellExtInit::Initialize. Per i gestori di menu di scelta rapida, acquisire l'oggetto dati passato a IShellExtInit::Initialize e quindi elaborarlo in IContextMenu::QueryContextMenu o IContextMenu::InvokeCommand.
Procedure consigliate per più verbi di selezione
Poiché il numero di elementi in uno scenario di verbo a selezione multipla può essere elevato, è importante considerare le implicazioni sulle prestazioni delle implementazioni dei verbi. Ad esempio, quando un utente cerca "*" su un ambito che include un numero elevato di elementi e quindi fa clic su Seleziona tutto e fa clic con il pulsante destro del mouse, il verbo viene visualizzato con una selezione che può includere migliaia di elementi. Di conseguenza, i verbi devono considerare solo il primo elemento della selezione e il conteggio complessivo degli elementi. Il primo elemento viene definito come elemento nella parte superiore della visualizzazione o come elemento su cui l'utente ha fatto clic con il pulsante destro del mouse.
In Windows 7 e versioni successive, il numero di elementi passati a un verbo è limitato a 16 quando viene richiesto un menu di scelta rapida. Il verbo viene quindi ricreato e inizializzato nuovamente con la selezione completa quando tale verbo viene richiamato.
In alcuni casi è opportuno considerare un numero ridotto di elementi fissi. Ad esempio, è opportuno che un verbo "diff" consideri solo i primi due elementi. In genere, non è necessario testare ogni elemento nella selezione per verificare se si tratta di un determinato tipo o eseguire una query su ogni elemento nella selezione per le relative proprietà. Esaminare piuttosto il primo elemento e decidere se è appropriato aggiungere il verbo.
Selezioni eterogenee
I verbi ottimistici vengono aggiunti automaticamente nel caso di selezione multipla, presupponendo che gli elementi non rilevati possano essere gestiti dal verbo. Al contrario, i verbi pessimistici non vengono aggiunti quando la selezione contiene elementi non rilevati e vengono aggiunti solo nei casi in cui il numero di elementi è ridotto.
I verbi dello stile del giocatore devono essere ottimisti e ignorare in modo discreto gli elementi non gestiti. Se un errore di azione sugli elementi può causare perdita o confusione dei dati, il verbo dovrebbe avvisare gli utenti sugli elementi che non possono essere elaborati. Ad esempio, un verbo "backup" dovrebbe indicare che non è stato possibile eseguire il backup di alcuni elementi.
Argomenti correlati
-
Scelta di un verbo statico o dinamico per il menu di scelta rapida
-
Personalizzazione di un menu di scelta rapida tramite verbi dinamici