COleControl

La classe COleControl è una potente classe di base per lo sviluppo di controlli OLE. Derivata da CWnd, questa classe eredita tutte le funzionalità di un oggetto window Windows oltre a funzionalità aggiuntive specifiche OLE, come evento di cottura e la capacità di supportare i metodi e le proprietà.

OLE controlli possono essere inseriti in applicazioni OLE contenitore e comunicano con il contenitore utilizzando un sistema a due vie di cottura evento ed esposizione di metodi e proprietà per il contenitore. Si noti che i contenitori OLE standard supportano solo la funzionalità di base di un controllo OLE. Essi sono in grado di supportare funzionalità estese di un controllo OLE. Cottura evento si verifica quando gli eventi sono inviati al contenitore a causa di certe azioni che si svolgono nel controllo. A sua volta, il contenitore comunica con il controllo utilizzando un set di metodi e proprietà analoghe alle funzioni membro di esposto e membri di dati di una classe C++. Questo approccio permette allo sviluppatore di controllare l'aspetto del controllo e notificare il contenitore quando si verificano determinate azioni.

Controlli privi di finestra

OLE controlli possono essere usato in posizione attiva senza una finestra. I controlli senza finestre hanno notevoli vantaggi:

I controlli non hanno bisogno di una finestra. Servizi che offre una finestra possono essere facilmente forniti tramite di una singola finestra condivisa (di solito il contenitore) e un po' di codice di dispacciamento. Avere una finestra è principalmente un'inutile complicazione sull'oggetto.

Quando viene utilizzato l'attivazione senza finestra, il contenitore (che hanno una finestra) è responsabile della fornitura di servizi che sarebbero altrimenti sono stati forniti dalla finestra di controllo. Ad esempio, se il controllo deve interrogare il focus della tastiera, il mouse capture di query o ottenere un contesto di periferica, queste operazioni sono gestite dal contenitore. COleControl le funzioni membro senza finestre operazione richiamare queste operazioni sul contenitore.

Quando è attivato l'attivazione senza finestra, i delegati del contenitore messaggi all'interfaccia IOleInPlaceObjectWindowless del controllo di input (un'estensione del IOleInPlaceObject per il sostegno senza finestre). L'implementazione di questa interfaccia di COleControlsarà spedire questi messaggi tramite mappa dei messaggi del controllo, dopo la regolazione del mouse coordinate in modo appropriato. È possibile elaborare questi messaggi come normale finestra messaggi, aggiungendo le voci relative alla mappa messaggi.

In un controllo senza finestre, si dovrebbero sempre utilizzare le funzioni di membro COleControl anziché le corrispondenti funzioni membro CWnd o le relative funzioni API di Windows.

OLE oggetti di controllo possono inoltre creare una finestra solo quando diventano attive, ma la quantità di lavoro necessaria per la transizione inattivo-attivo va su e la velocità della transizione va giù. Ci sono casi in cui questo è un problema: ad esempio, si consideri una griglia di caselle di testo. Quando il cursore su e giù attraverso la colonna, ciascun controllo deve essere posto attivato e quindi disattivato. La velocità della transizione non attivo/attivo influenzerà direttamente la velocità di scorrimento.

Per ulteriori informazioni sullo sviluppo di un quadro di controllo OLE, vedere gli articoli I controlli ActiveX e la creazione di un programma con la creazione guidata controllo ActiveX nel manuale del programmatore di Visual C++. Per ulteriori informazioni sull'aggiunta di funzionalità oltre il quadro di base, vedere un controllo ActiveX (il tutorial Circle) in Visual C++ tutorial. Per informazioni su come ottimizzare i controlli OLE, tra cui controlli senza finestre e senza sfarfallii, vedere controlli ActiveX: ottimizzazione nel manuale del programmatore di Visual C++.

# include lt;afxctl.h>

Membri della classe |nbsp; Classe base | Gerarchia Chart

Campio&ninbsp; CIRC3 campione MFC | Esempio MFC DRAWPIC | Esempio MFC TESTHELP

Vedere a&nchenbsp;COlePropertyPage, CFontHolder, CPictureHolder

Index