Condividi tramite


Panoramica delle linee guida per il controllo e il controllo dei contenitori

Un controllo ActiveX è essenzialmente un semplice oggetto OLE che supporta l'interfaccia IUnknown . In genere supporta più interfacce per offrire funzionalità, ma tutte le interfacce aggiuntive possono essere visualizzate come facoltative e, di conseguenza, un contenitore di controlli non deve basarsi su altre interfacce supportate. Non specificando interfacce aggiuntive che un controllo deve supportare, un controllo può indirizzare in modo efficiente una determinata area di funzionalità senza dover supportare interfacce specifiche per qualificarsi come controllo. Come sempre con OLE, sia in un controllo che in un contenitore di controlli, non si deve mai presumere che sia disponibile un'interfaccia e che siano sempre seguite le convenzioni standard di controllo dei ritorni. È importante che un contenitore di controlli o controlli degradi correttamente e offra funzionalità alternative se non è disponibile un'interfaccia necessaria.

Un contenitore di controlli ActiveX deve essere in grado di ospitare un controllo ActiveX minimo; supporterà anche una serie di interfacce aggiuntive, come specificato in Contenitori. Esistono diverse interfacce e metodi che un contenitore può supportare facoltativamente, raggruppati in aree funzionali note come categorie di componenti. Un contenitore può supportare qualsiasi combinazione di categorie di componenti, ad esempio esiste una categoria di componenti per l'associazione dati e un contenitore può o meno supportare la funzionalità di associazione dati, a seconda delle esigenze di mercato del contenitore. Se un controllo richiede il supporto di databinding da un contenitore a funzione, questo requisito verrà immesso nel Registro di sistema. Ciò consente a un contenitore di controlli di offrire solo l'inserimento di tali controlli che sa che può ospitare correttamente. È importante notare che le categorie di componenti vengono specificate come parte di OLE e non sono specifiche dei controlli ActiveX, l'architettura dei controlli usa categorie di componenti per identificare le aree di funzionalità che un componente OLE può supportare. Le categorie di componenti non sono cumulative o esclusive, quindi un contenitore di controlli può supportare una categoria senza necessariamente supportare un'altra.

È importante per i controlli che richiedono funzionalità facoltative o funzionalità specifiche di un determinato contenitore per essere chiaramente inseriti e commercializzati con tali requisiti. Analogamente, i contenitori che offrono determinate funzionalità o categorie di componenti devono essere commercializzati e inseriti nel pacchetto, offrendo tali livelli di supporto quando si ospitano controlli ActiveX. È consigliabile controllare la destinazione e il test con il maggior numero possibile di contenitori e degradare normalmente per offrire funzionalità meno o alternative se le interfacce o i metodi non sono disponibili. In una situazione in cui un controllo non può eseguire la funzione di processo designata senza il supporto di una categoria di componenti, tale categoria deve essere immessa come requisito nel Registro di sistema per impedire l'inserimento del controllo in un contenitore inappropriato.

Queste linee guida definiscono tali interfacce e metodi che un controllo può prevedere il supporto di un contenitore di controlli, anche se come sempre un controllo deve controllare i valori restituiti quando si usano QueryInterface o altri metodi per ottenere puntatori a queste interfacce. Un contenitore non deve aspettarsi che un controllo supporti qualcosa di più dell'interfaccia IUnknown e queste linee guida identificano quali interfacce un controllo può supportare e che cosa significa la presenza di una particolare interfaccia.

Perché le linee guida per i contenitori di controlli e controlli ActiveX sono importanti

I controlli ActiveX sono diventati l'architettura principale per lo sviluppo di componenti software programmabili da usare in un'ampia gamma di contenitori diversi, dagli strumenti di sviluppo software agli strumenti di produttività degli utenti finali. Affinché un controllo funzioni correttamente in un'ampia gamma di contenitori, il controllo deve essere in grado di presupporre un certo livello minimo di funzionalità che può basarsi su in tutti i contenitori.

Seguendo queste linee guida, gli sviluppatori di controlli e contenitori rendono i propri controlli e contenitori più affidabili e interoperabili e, infine, componenti più utilizzabili per la creazione di soluzioni basate su componenti.

Operazioni da eseguire quando un'interfaccia necessaria non è disponibile

I programmi OLE devono usare QueryInterface per acquisire puntatori di interfaccia e devono controllare il valore restituito. Le applicazioni OLE non possono presupporre che QueryInterface abbia esito positivo.

Questo requisito si applica a tutte le applicazioni OLE. Se l'interfaccia richiesta non è disponibile, ovvero QueryInterface restituisce E_NOINTERFACE), il controllo o il contenitore deve degradarsi normalmente, anche se ciò significa che non può eseguire la funzione di processo designata.

Linee guida per controlli e controlli ActiveX