Condividi tramite


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

Un controllo ActiveX è essenzialmente un oggetto OLE semplice 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 controllo o contenitore di controlli si degradi con eleganza e offra funzionalità alternative se un'interfaccia richiesta non è disponibile.

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 associazione dati da un contenitore per funzionare, questo requisito verrà immesso nel Registro di sistema. Ciò consente a un contenitore di controllo di offrire solo l’inserimento di quei controlli che sa di poter 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 che i controlli che richiedono funzionalità facoltative o funzionalità specifiche di un determinato contenitore siano chiaramente inclusi 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 mirare e testare con il maggior numero possibile di contenitori e degradare gradualmente per offrire funzionalità minori 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 quelle interfacce e metodi che un controllo si aspetta che un contenitore di controlli supporti, anche se, come sempre, un controllo deve controllare i valori restituiti quando utilizza QueryInterface o altri metodi per ottenere puntatori a queste interfacce. Un contenitore non deve aspettarsi che un controllo supporti altro che l'interfaccia IUnknown e queste linee guida identificano le interfacce che un controllo può supportare e la presenza di una particolare interfaccia.

Perché le linee guida sui controlli ActiveX e sui contenitori di controllo 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 avrà 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 degradare in modo appropriato, anche se ciò significa che non può eseguire la funzione designata.

linee guida per il controllo ActiveX e il contenitore di controlli