Visuelle Darstellung
Ein -Steuerelement unterstützt das Positionieren und Anzeigen in seinem Container mithilfe der Verbunddokumenttechnologie und der OLE-Drag-and-Drop-Technologie, die sowohl das Steuerelement als auch den zugehörigen Container umfasst. Das Steuerelement muss sich selbst zeichnen können, während der Container die Position des Steuerelements und dessen Größe verwaltet.
Steuerelemente werden zu den grundlegenden Funktionen hinzugefügt, die von OLE-Dokumenten bereitgestellt werden. Ein Steuerelement ruft die IOleClientSite::RequestNewObjectLayout-Methode seines Clients auf, um dem Container mitzuteilen, dass es seine Größe ändern möchte. Der Client ruft das IOleObject::GetExtent des Steuerelements auf, um die neue Größe zu erhalten, und ruft IOleInPlaceObject::SetObjectRects auf, um das Steuerelement auf seine neue Größe festzulegen.
Steuerelemente, die nur IPersistStream oder IPersistStreamInit unterstützen, unterstützen das Zwischenspeichern über IOleCache2 nicht, da der Cache Unterstützung für IPersistStorage erfordert. 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 ihre 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. Für eine erfolgreiche Kommunikation benötigt das Steuerelement eine Möglichkeit, Werte in die Koordinaten seines Containers zu konvertieren. Der Container stellt ein Websiteobjekt mit der IOleControlSite::TransformCoords-Methode bereit. Das Steuerelement ruft diese Methode zuerst am Clientstandort des Containers auf, um seine Koordinaten in die entsprechenden Koordinaten für den Container zu konvertieren. Anschließend kann er die konvertierten Koordinaten an den Container übergeben.
Steuerelemente können IOleControlSite::LockInPlaceActive im Standortobjekt des Containers aufrufen, um zu verhindern, dass der Container versucht, das Steuerelement aus dem aktiven Zustand zu herabstufen. Wenn das Steuerelement auf diese Weise herabgestuft wird, wird das Steuerelement deaktiviert und sein Fenster zerstört. Wenn das Steuerelement sein Fenster also für eine bekannte Dauer beibehalten muss, kann es LockInPlaceActive aufrufen, um seinen Zustand zu garantieren.
Zugehörige Themen