IViewObjectEx::GetNaturalExtent-Methode (ocidl.h)
Stellt Größenhinweise aus dem Container bereit, die für das Objekt verwendet werden sollen, wenn der Benutzer die Größe ändert.
Syntax
HRESULT GetNaturalExtent(
[in] DWORD dwAspect,
[in] LONG lindex,
[in] DVTARGETDEVICE *ptd,
[in] HDC hicTargetDev,
[in] DVEXTENTINFO *pExtentInfo,
[out] LPSIZEL pSizel
);
Parameter
[in] dwAspect
Der angeforderte Zeichnungsaspekt. Es kann sich um einen der folgenden Werte handeln, die von der DVASPECT-Enumeration definiert werden.
[in] lindex
Gibt den Teil des Objekts an, der für den Zeichnungsvorgang von Interesse ist. Die Interpretation variiert abhängig vom Wert im dwAspect-Parameter . Weitere Informationen finden Sie in der DVASPECT-Enumeration .
[in] ptd
Zeiger auf die Zielgerätestruktur, die das Gerät beschreibt, für das das Objekt gerendert werden soll. Bei NULL sollte die Ansicht für das Standardzielgerät (in der Regel die Anzeige) gerendert werden. Ein anderer Wert als NULL wird in Verbindung mit hicTargetDev und hdcDraw interpretiert. Wenn hdcDraw beispielsweise einen Drucker als Gerätekontext angibt, verweist der ptd-Parameter auf eine Struktur, die dieses Druckergerät beschreibt. Die Daten können tatsächlich gedruckt werden, wenn hicTargetDev ein gültiger Wert ist, oder es kann im Druckvorschaumodus angezeigt werden, wenn hicTargetDevNULL ist.
[in] hicTargetDev
Gibt den Informationskontext für das Zielgerät an, der durch den ptd-Parameter angegeben wird, aus dem das Objekt Gerätemetriken extrahieren und die Funktionen des Geräts testen kann. Wenn ptdNULL ist; das -Objekt sollte den Wert im hicTargetDev-Parameter ignorieren.
[in] pExtentInfo
Zeiger auf die DVEXTENTINFO-Struktur , die die Größendaten angibt.
[out] pSizel
Zeiger auf die Größe der vom -Objekt zurückgegebenen Daten. Die zurückgegebenen Größendaten sind für alle Dimensionen, die nicht angepasst wurden, auf -1 festgelegt. Das ist, wenn cx -1 ist, dann wurde die Breite nicht angepasst, wenn cy -1 ist, dann wurde die Höhe nicht angepasst. Wenn E_FAIL zurückgegeben wird, der angibt, dass keine Größe angepasst wurde, ist pSizel möglicherweise NULL.
Rückgabewert
Diese Methode gibt S_OK bei Erfolg zurück. Weitere mögliche Rückgabewerte:
Rückgabecode | Beschreibung |
---|---|
|
Diese Methode wird nicht für den angegebenen dwAspect implementiert, oder die Größe wurde nicht angepasst. |
|
Diese Methode wurde nicht implementiert. |
Hinweise
Es gibt zwei allgemeine Ansätze zur Größenanpassung eines Steuerelements. Der erste Ansatz gibt der Kontrolle die Verantwortung für die Größenanpassung selbst; Der zweite Ansatz gibt dem Container die Verantwortung für die Größenanpassung des Steuerelements. Der erste Ansatz wird als Autosizing bezeichnet. Beim zweiten Ansatz gibt es zwei Alternativen: Die Inhaltsdimensionierung und die integrale Größenanpassung.
Die IViewObjectEx::GetNaturalExtent-Methode unterstützt sowohl die Inhalts- als auch die integrale Größenanpassung. Bei der Inhaltsdimensionierung übergibt der Container die DVEXTENTINFO-Struktur an das Objekt, in das das Objekt eine vorgeschlagene Größe zurückgibt. Bei der integralen Größenanpassung übergibt der Container eine bevorzugte Größe an das Objekt in DVEXTENTINFO, und das Objekt passt seine Höhe tatsächlich an. Die integrale Größenanpassung wird verwendet, wenn der Benutzer im Entwurfsmodus eine neue Größe anbandet.
Die automatische Größenanpassung erfolgt in der Regel bei Objekten wie dem Label-Steuerelement, das die Größe ändert, wenn die Autosize-Eigenschaft aktiviert und der zugeordnete Text geändert wurde. Die Autosizing wird je nach Zustand des Objekts unterschiedlich behandelt.
Wenn das Objekt inaktiv ist, geschieht Folgendes:
- Das -Objekt ruft IOleClientSite::RequestNewObjectLayout auf.
- Der Container ruft IOleObject::GetExtent auf und ruft die neuen Erweiterungen ab.
- Der Container ruft IOleObject::SetExtent auf und passt die neuen Erweiterungen an.
- Das -Objekt ruft IOleInPlaceSite::OnPosRectChange auf, um anzugeben, dass die Größe geändert werden muss.
- Der Container ruft IOleInPlaceObject::SetObjectRects auf und gibt die neue Größe an.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | ocidl.h |
Weitere Informationen
IOleClientSite::RequestNewObjectLayout
IOleInPlaceObject::SetObjectRects