Condividi tramite


Rappresentazione visiva

Un controllo supporta il posizionamento e la visualizzazione all'interno del contenitore tramite la tecnologia di trascinamento dei documenti composti e la tecnologia ole di trascinamento della selezione che coinvolge sia il controllo che il relativo contenitore. Il controllo deve essere in grado di disegnare se stesso mentre il contenitore gestisce la posizione del controllo e le relative dimensioni.

I controlli aggiungono alle funzioni di base fornite dai documenti OLE. Un controllo chiama il metodo IOleClientSite::RequestNewObjectLayout del client per indicare al contenitore che vuole modificarne le dimensioni. Il client chiama il IOleObject::GetExtent del controllo per ottenere le nuove dimensioni e chiama IOleInPlaceObject::SetObjectRects per impostare il controllo sulle nuove dimensioni.

I controlli che supportano solo IPersistStream o IPersistStreamInit non supportano la memorizzazione nella cache tramite IOleCache2 perché la cache richiede il supporto per IPersistStorage. Tuttavia, questi controlli devono consentire al client di eseguire il rendering del controllo tramite IDataObject::GetData in modo che il client possa creare e gestire facoltativamente la propria cache dei dati di presentazione per il controllo.

I controlli utilizzano il tipo HIMETRIC per le coordinate. Tuttavia, contenitori diversi possono usare sistemi di coordinate diversi. Il contenitore vuole ricevere coordinate nel proprio sistema, ma il controllo non conosce necessariamente le coordinate che il contenitore usa. Per comunicare correttamente, il controllo richiede un modo per convertire i valori nelle coordinate del contenitore. Il contenitore fornisce un oggetto sito con il metodo IOleControlSite::TransformCoords. Il controllo chiama prima questo metodo nel sito client del contenitore per convertire le coordinate nelle coordinate appropriate per il contenitore. Quindi, può passare le coordinate convertite al contenitore.

I controlli possono chiamare IOleControlSite::LockInPlaceActive nell'oggetto sito del contenitore per impedire al contenitore di tentare di abbassare di livello il controllo fuori dallo stato attivo sul posto. Abbassando di livello il controllo in questo modo, il controllo viene disattivato e la finestra viene eliminata definitivamente, quindi se il controllo deve mantenere la finestra per una durata nota, può chiamare LockInPlaceActive per garantirne lo stato.

controlli ActiveX