Metodo ITextServices2::TxGetNaturalSize2 (textserv.h)
Ridimensiona un controllo in modo da adattarne il contenuto in modo appropriato. Questo metodo è simile a TxGetNaturalSize, ma recupera anche l'ascesa della riga superiore del testo.
Sintassi
HRESULT TxGetNaturalSize2(
DWORD dwAspect,
HDC hdcDraw,
HDC hicTargetDev,
DVTARGETDEVICE *ptd,
DWORD dwMode,
const SIZEL *psizelExtent,
LONG *pwidth,
LONG *pheight,
LONG *pascent
);
Parametri
dwAspect
Tipo: DWORD
Aspetto del disegno. Può essere uno qualsiasi dei valori dell'enumerazione DVASPECT .
hdcDraw
Tipo: HDC
Contesto del dispositivo in cui viene eseguito il disegno.
hicTargetDev
Tipo: HDC
Contesto del dispositivo per il quale deve essere formattato il testo, ovvero per WYSIWYG.
ptd
Tipo: DVTARGETDEVICE*
Altre informazioni sul dispositivo di destinazione.
dwMode
Tipo: DWORD
Tipo di adattamento richiesto. Può essere una delle seguenti.
Valore | Significato |
---|---|
|
Usare le unità metriche inglesi (EMU) anziché i pixel come unità di misura (entrambi i modi) per i parametri di questo metodo. |
|
Ridimensionare il controllo in modo da adattare l'intero testo formattando il testo alla larghezza passata. L'oggetto servizi di testo restituisce l'altezza dell'intero testo e la larghezza della linea più ampia.
Ad esempio, questa operazione deve essere eseguita quando l'utente fa doppio clic su uno degli handle del controllo. |
|
Ridimensionare il controllo in modo che si adatti al contenuto rientrato. |
|
Ridimensionare il controllo in modo che si adatti al contenuto rientrato e agli spazi vuoti finali. |
|
Ridimensionare il controllo in modo che si adatti al contenuto non rientrato e agli spazi vuoti finali. |
|
Per un controllo testo normale, includere l'altezza del ritorno a capo finale durante il calcolo delle dimensioni. |
|
Ridimensionare il controllo per visualizzare un numero integrale di righe (nessuna riga viene ritagliata). Formattare un testo sufficiente per riempire la larghezza e l'altezza passata e quindi restituire un'altezza arrotondata al limite di linea più vicino.
Nota La larghezza e l'altezza passate e restituite corrispondono al rettangolo di visualizzazione. L'host deve tornare al rettangolo client in base alle esigenze. Poiché questi valori rappresentano l'extent dell'oggetto testo, sono input e output nelle coordinate HIMETRIC (ogni unità HIMETRIC è 0,01 millimetri) e la misurazione non include alcun fattore di zoom. Per una descrizione del fattore di zoom, vedere TxGetExtent.
|
psizelExtent
Tipo: const SIZEL*
Dimensioni degli extent (in unità HIMETRIC) da usare per lo zoom.
pwidth
Tipo: LONG*
Larghezza per l'adattamento definito da dwMode.
pheight
Tipo: LONG*
Altezza per l'adattamento definito da dwMode.
pascent
Tipo: LONG*
Per i controlli a riga singola, riceve l'ascente (unità sopra la linea di base) di caratteri nella riga superiore del testo.
Valore restituito
Tipo: HRESULT
Se il metodo ha esito positivo, il valore restituito viene S_OK.
Se i servizi di testo non sono riusciti ad attivare l'oggetto, il valore restituito è uno dei codici HRESULT seguenti. Per altre informazioni sui codici di errore COM, vedere Gestione degli errori in COM.
Codice restituito | Descrizione |
---|---|
|
Impossibile determinare le dimensioni corrette. |
|
Uno o più argomenti non sono validi. |
|
Memoria insufficiente. |
Commenti
I primi quattro parametri sono simili ai parametri equivalenti in ITextServices::TxDraw e forniscono le stesse informazioni. Nel caso in cui le righe debbano essere ricalcolate, TxGetNaturalSize2 usa questi valori nello stesso modo di ITextServices::TxDraw.
I parametri pwidth e pheight sono parametri in/out. L'host passa la larghezza provvisoria e l'altezza dell'extent naturale dell'oggetto di testo. L'oggetto servizi di testo confronta questi valori con lo stato memorizzato nella cache corrente e, se diverso, ricalcola le righe. Calcola quindi e restituisce le dimensioni naturali, come specificato da dwMode.
Esempio
Nell'esempio seguente viene illustrato come inizializzare il parametro psizelExtent per su un fattore di zoom pari a 1:1. I puntini di sospensione indicano il codice che è necessario specificare.
LONG dxpi = GetDeviceCaps(hdc, LOGPIXELSX);
LONG dypi = GetDeviceCaps(hdc, LOGPIXELSY);
LONG dyAscent = 0;
LONG dx = ... ; // Text image width, in pixels
LONG dy = ... ; // Text image height, in pixels
SIZEL sizel; // dx and dy, in HIMETRIC
ITextServices2 *pserv = ... ; // Interface for single-line control
sizel.cx = MulDiv(dx, HIMETRIC_PER_INCH, dxpi);
sizel.cy = MulDiv(dy, HIMETRIC_PER_INCH, dypi);
pserv->TxGetNaturalSize2(DVASPECT_DOCPRINT, hdc, hdcNil, pNil,
TXTNS_FITTOCONTENT, &sizel, &dx, &dy, &dyAscent)))
Requisiti
Client minimo supportato | Windows 8 [solo app desktop] |
Server minimo supportato | Windows Server 2012 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | textserv.h |
DLL | Msftedit.dll |