Freigeben über


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.

Wert Bedeutung
DVASPECT_CONTENT
Stellen Sie eine Darstellung des Steuerelements bereit, damit es als eingebettetes Objekt in einem Container angezeigt werden kann. Dieser Wert wird i. d. R. für Verbunddokumentobjekte angegeben. Die Darstellung kann für den Bildschirm oder den Drucker bereitgestellt werden.
DVASPECT_DOCPRINT
Stellen Sie mithilfe des Befehls Drucken im Menü Datei eine Darstellung des Steuerelements auf dem Bildschirm bereit, als würde es auf einen Drucker gedruckt. Die beschriebenen Daten können auf mehreren Seiten dargestellt werden.
DVASPECT_ICON
Stellen Sie eine ikonische Darstellung des Steuerelements bereit.
DVASPECT_THUMBNAIL
Stellen Sie eine Miniaturansicht eines Objekts bereit, damit es in einem Browsertool angezeigt werden kann. Die Miniaturansicht ist ungefähr eine 120 mal 120 Pixel große, geräteunabhängige Bitmap mit 16 Farben (empfohlen), die möglicherweise in eine Metadatei umschlossen ist.

[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
E_FAIL
Diese Methode wird nicht für den angegebenen dwAspect implementiert, oder die Größe wurde nicht angepasst.
E_NOTIMPL
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:

  1. Das -Objekt ruft IOleClientSite::RequestNewObjectLayout auf.
  2. Der Container ruft IOleObject::GetExtent auf und ruft die neuen Erweiterungen ab.
  3. Der Container ruft IOleObject::SetExtent auf und passt die neuen Erweiterungen an.
Wenn das Objekt aktiv ist, geschieht Folgendes:
  1. Das -Objekt ruft IOleInPlaceSite::OnPosRectChange auf, um anzugeben, dass die Größe geändert werden muss.
  2. 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

IOleInPlaceSite::OnPosRectChange

IOleObject::GetExtent

IOleObject::SetExtent

IViewObjectEx