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
TXTNS_EMU
Usare le unità metriche inglesi (EMU) anziché i pixel come unità di misura (entrambi i modi) per i parametri di questo metodo.
TXTNS_FITTOCONTENT
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.

TXTNS_FITTOCONTENT2
Ridimensionare il controllo in modo che si adatti al contenuto rientrato.
TXTNS_FITTOCONTENT3
Ridimensionare il controllo in modo che si adatti al contenuto rientrato e agli spazi vuoti finali.
TXTNS_FITTOCONTENTWSP
Ridimensionare il controllo in modo che si adatti al contenuto non rientrato e agli spazi vuoti finali.
TXTNS_INCLUDELASTLINE
Per un controllo testo normale, includere l'altezza del ritorno a capo finale durante il calcolo delle dimensioni.
TXTNS_ROUNDTOLINE
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
E_FAIL
Impossibile determinare le dimensioni corrette.
E_INVALIDARG
Uno o più argomenti non sono validi.
E_OUTOFMEMORY
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

Vedi anche

ITextServices2