Visuelle Darstellung
Ein Steuerelement unterstützt die Positionierung und Anzeige innerhalb seines Containers durch Verbunddokumenttechnologie und OLE-Drag-and-Drop-Technologie, die sowohl das Steuerelement als auch den 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 des Clients auf, um dem Container mitzuteilen, dass er seine Größe ändern möchte. Der Client ruft die IOleObject::GetExtent- des Steuerelements auf, um die neue Größe abzurufen und IOleInPlaceObject::SetObjectRects, 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 eine 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 die Koordinaten. Verschiedene Container können jedoch unterschiedliche Koordinatensysteme verwenden. Der Container möchte Koordinaten in seinem eigenen System empfangen, aber das Steuerelement weiß nicht unbedingt, welche Koordinaten sein Container verwendet. Um erfolgreich zu kommunizieren, benötigt das Steuerelement eine Möglichkeit, Werte in die Koordinaten des Containers zu konvertieren. Der Container stellt ein Websiteobjekt mit der IOleControlSite::TransformCoords-Methode bereit. Das Steuerelement ruft diese Methode zuerst auf dem Clientstandort des Containers auf, um seine Koordinaten in die entsprechenden Koordinaten für den Container zu konvertieren. Anschließend kann sie die konvertierten Koordinaten an den Container übergeben.
Steuerelemente können IOleControlSite::LockInPlaceActive- im Websiteobjekt des Containers aufrufen, um zu verhindern, dass der Container versucht, das Steuerelement außerhalb des aktiven Zustands zu herabstufen. Wenn das Steuerelement auf diese Weise herabgestuft wird, wird das Steuerelement deaktiviert und sein Fenster zerstört. Wenn das Steuerelement also sein Fenster für eine bekannte Dauer beibehalten muss, kann es LockInPlaceActive- aufrufen, um den Zustand zu garantieren.
Verwandte Themen