Condividi tramite


Metodo IViewObjectEx::GetNaturalExtent (ocidl.h)

Fornisce hint di ridimensionamento dal contenitore per l'oggetto da usare quando l'utente lo ridimensiona.

Sintassi

HRESULT GetNaturalExtent(
  [in]  DWORD          dwAspect,
  [in]  LONG           lindex,
  [in]  DVTARGETDEVICE *ptd,
  [in]  HDC            hicTargetDev,
  [in]  DVEXTENTINFO   *pExtentInfo,
  [out] LPSIZEL        pSizel
);

Parametri

[in] dwAspect

Aspetto del disegno richiesto. Può essere uno dei valori seguenti, definiti dall'enumerazione DVASPECT .

Valore Significato
DVASPECT_CONTENT
Specificare una rappresentazione del controllo in modo che possa essere visualizzata come oggetto incorporato all'interno di un contenitore. Questo valore è in genere specificato per gli oggetti documento compositi. La presentazione può essere fornita per lo schermo o la stampante.
DVASPECT_DOCPRINT
Specificare una rappresentazione del controllo sullo schermo come se fosse stampata in una stampante usando il comando Stampa dal menu File . I dati descritti possono rappresentare una sequenza di pagine.
DVASPECT_ICON
Fornire una rappresentazione iconica del controllo.
DVASPECT_THUMBNAIL
Specificare una rappresentazione di anteprima di un oggetto in modo che possa essere visualizzata in uno strumento di esplorazione. L'anteprima è approssimativamente 120 di 120 pixel, 16 colori (consigliata) bitmap indipendente dal dispositivo potenzialmente avvolta in un metafile.

[in] lindex

Indica la parte dell'oggetto che è di interesse per l'operazione di disegno. L'interpretazione varia a seconda del valore nel parametro dwAspect . Per altre informazioni, vedere l'enumerazione DVASPECT .

[in] ptd

Puntatore alla struttura del dispositivo di destinazione che descrive il dispositivo per il quale deve essere eseguito il rendering dell'oggetto. Se NULL, la visualizzazione deve essere sottoposta a rendering per il dispositivo di destinazione predefinito (in genere la visualizzazione). Un valore diverso da NULL viene interpretato in combinazione con hicTargetDev e hdcDraw. Ad esempio, se hdcDraw specifica una stampante come contesto del dispositivo, il parametro ptd punta a una struttura che descrive tale dispositivo stampante. I dati possono essere effettivamente stampati se hicTargetDev è un valore valido oppure può essere visualizzato in modalità di anteprima di stampa se hicTargetDev è NULL.

[in] hicTargetDev

Specifica il contesto informativo per il dispositivo di destinazione indicato dal parametro ptd da cui l'oggetto può estrarre le metriche del dispositivo e testare le funzionalità del dispositivo. Se ptd è NULL; l'oggetto deve ignorare il valore nel parametro hicTargetDev .

[in] pExtentInfo

Puntatore alla struttura DVEXTENTINFO che specifica i dati di ridimensionamento.

[out] pSizel

Puntatore al ridimensionamento dei dati restituiti dall'oggetto . I dati di ridimensionamento restituiti sono impostati su -1 per qualsiasi dimensione non modificata. Vale a dire se cx è -1, la larghezza non è stata modificata, se cy è -1, l'altezza non è stata modificata. Se E_FAIL viene restituito che indica che non è stata modificata alcuna dimensione, pSizel potrebbe essere NULL.

Valore restituito

Questo metodo restituisce S_OK se l'operazione ha esito positivo. Gli altri valori restituiti possibili includono i seguenti:

Codice restituito Descrizione
E_FAIL
Questo metodo non viene implementato per l'oggetto dwAspect specificato oppure la dimensione non è stata modificata.
E_NOTIMPL
Questo metodo non è stato implementato.

Commenti

Esistono due approcci generali per ridimensionare un controllo. Il primo approccio dà la responsabilità del controllo per il ridimensionamento stesso; il secondo approccio fornisce al contenitore la responsabilità del ridimensionamento del controllo. Il primo approccio viene chiamato ridimensionamento automatico. Esistono due alternative coinvolte nel secondo approccio: ridimensionamento del contenuto e ridimensionamento integrale.

Il metodo IViewObjectEx::GetNaturalExtent supporta sia il contenuto che il ridimensionamento integrale. Nel ridimensionamento del contenuto, il contenitore passa la struttura DVEXTENTINFO all'oggetto in cui l'oggetto restituisce una dimensione suggerita. Nel ridimensionamento integrale, il contenitore passa una dimensione preferita all'oggetto in DVEXTENTINFO e l'oggetto regola effettivamente l'altezza. Il ridimensionamento integrale viene usato quando l'utente crea una nuova dimensione in modalità di progettazione.

Il ridimensionamento automatico si verifica in genere con oggetti come il controllo Etichetta che ridimensiona se la proprietà autosize è stata abilitata e il testo associato è stato modificato. Il ridimensionamento automatico viene gestito in modo diverso a seconda dello stato dell'oggetto.

Se l'oggetto è inattivo, si verifica quanto segue:

  1. L'oggetto chiama IOleClientSite::RequestNewObjectLayout.
  2. Il contenitore chiama IOleObject::GetExtent e recupera i nuovi extent.
  3. Il contenitore chiama IOleObject::SetExtent e modifica i nuovi extent.
Se l'oggetto è attivo, si verifica quanto segue:
  1. L'oggetto chiama IOleInPlaceSite::OnPosRectChange per specificare che richiede il ridimensionamento.
  2. Il contenitore chiama IOleInPlaceObject::SetObjectRects e specifica le nuove dimensioni.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione ocidl.h

Vedi anche

IOleClientSite::RequestNewObjectLayout

IOleInPlaceObject::SetObjectRects

IOleInPlaceSite::OnPosRectChange

IOleObject::GetExtent

IOleObject::SetExtent

IViewObjectEx