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 .
[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 |
---|---|
|
Questo metodo non viene implementato per l'oggetto dwAspect specificato oppure la dimensione non è stata modificata. |
|
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:
- L'oggetto chiama IOleClientSite::RequestNewObjectLayout.
- Il contenitore chiama IOleObject::GetExtent e recupera i nuovi extent.
- Il contenitore chiama IOleObject::SetExtent e modifica i nuovi extent.
- L'oggetto chiama IOleInPlaceSite::OnPosRectChange per specificare che richiede il ridimensionamento.
- 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