Visuelle Darstellung
Ein Steuerelement unterstützt die Positionierung und Anzeige in seinem Container durch Verbunddokumenttechnologie und OLE-Drag & Drop-Technologie, die sowohl das Steuerelement als auch seinen Container umfasst. Das Steuerelement muss sich selbst zeichnen können, während der Container die Position des Steuerelements und seine Größe verwaltet.
Steuerelemente werden den grundlegenden Funktionen hinzugefügt, die von OLE-Dokumenten bereitgestellt werden. Ein Steuerelement ruft die IOleClientSite::RequestNewObjectLayout-Methode seines Clients auf, um seinem Container mitzuteilen, dass seine Größe geändert werden soll. Der Client ruft IOleObject::GetExtent des Steuerelements auf, um die neue Größe abzurufen, und ruft IOleInPlaceObject::SetObjectRects auf, um das Steuerelement auf seine neue Größe festzulegen.
Steuerelemente, die nur IPersistStream oder IPersistStreamInit unterstützen, unterstützen keine Zwischenspeicherung über IOleCache2, da der Cache Unterstützung für IPersistStorageerfordert. Diese Steuerelemente sollten dem Client jedoch die Möglichkeit bieten, das Steuerelement über IDataObject::GetData zu rendern, damit der Client optional einen eigenen Cache der Präsentationsdaten für das Steuerelement erstellen und verwalten kann.
Steuerelemente verwenden den HIMETRIC-Typ für seine Koordinaten. Unterschiedliche Container können jedoch unterschiedliche Koordinatensysteme verwenden. Der Container möchte Koordinaten in seinem eigenen System empfangen, aber das Steuerelement weiß nicht notwendigerweise, welche Koordinaten sein Container verwendet. Um erfolgreich zu kommunizieren, benötigt das Steuerelement eine Möglichkeit, Werte in die Koordinaten seines Containers zu konvertieren. Der Container stellt ein Standortobjekt mit der IOleControlSite::TransformCoords-Methode bereit. Das -Steuerelement ruft diese Methode zuerst auf der Clientwebsite des Containers auf, um seine Koordinaten in die entsprechenden Koordinaten für den Container zu konvertieren. Anschließend können die konvertierten Koordinaten an den Container übergeben werden.
Steuerelemente können IOleControlSite::LockInPlaceActive im Standortobjekt des Containers aufrufen, um zu verhindern, dass der Container versucht, das Steuerelement aus dem aktiven Zustand herauszustufen. Das Herabgestuften des Steuerelements auf diese Weise bewirkt, dass das Steuerelement deaktiviert und sein Fenster zerstört wird. Wenn das Steuerelement also sein Fenster für einen bekannten Zeitraum beibehalten muss, kann es LockInPlaceActive aufrufen, um seinen Zustand zu gewährleisten.