Поделиться через


Метод ITextServices2::TxGetNaturalSize2 (textserv.h)

Изменяет размер элемента управления таким образом, чтобы он соответствовал его содержимому. Этот метод аналогичен TxGetNaturalSize, но также извлекает подъем верхней строки текста.

Синтаксис

HRESULT TxGetNaturalSize2(
  DWORD          dwAspect,
  HDC            hdcDraw,
  HDC            hicTargetDev,
  DVTARGETDEVICE *ptd,
  DWORD          dwMode,
  const SIZEL    *psizelExtent,
  LONG           *pwidth,
  LONG           *pheight,
  LONG           *pascent
);

Параметры

dwAspect

Тип: DWORD

Аспект для рисунка. Это может быть любое из значений перечисления DVASPECT .

hdcDraw

Тип: HDC

Контекст устройства, в котором выполняется рисование.

hicTargetDev

Тип: HDC

Контекст устройства, для которого должен быть отформатирован текст (то есть для WYSIWYG).

ptd

Тип: DVTARGETDEVICE*

Дополнительные сведения о целевом устройстве.

dwMode

Тип: DWORD

Тип запрошенной установки. Это может быть один из следующих вариантов.

Значение Значение
TXTNS_EMU
Используйте английские единицы метрик (EMU) вместо пикселей в качестве единиц измерения (в обоих случаях) для параметров этого метода.
TXTNS_FITTOCONTENT
Измените размер элемента управления в соответствии со всем текстом, отформатируя текст в соответствии с передаваемой шириной. Объект text services возвращает высоту всего текста и ширину самой широкой строки.

Например, это следует делать, когда пользователь дважды щелкает один из дескрипторов элемента управления.

TXTNS_FITTOCONTENT2
Измените размер элемента управления так, чтобы он соответствовал содержимому с отступом.
TXTNS_FITTOCONTENT3
Измените размер элемента управления так, чтобы он соответствовал содержимому с отступом и пробелам в конце.
TXTNS_FITTOCONTENTWSP
Измените размер элемента управления таким образом, чтобы он соответствовал неотправленным содержимому и пробелам в конце.
TXTNS_INCLUDELASTLINE
Для элемента управления в виде обычного текста включите высоту конечного возврата каретки при вычислении размера.
TXTNS_ROUNDTOLINE
Измените размер элемента управления, чтобы отобразить целое число строк (линия не обрезается). Отформатируйте достаточно текста, чтобы заполнить ширину и высоту, которые передаются, а затем вернуть высоту, округленную до ближайшей границы линии.
Примечание Переданная и возвращаемая ширина и высота соответствуют прямоугольнику представления. При необходимости узел должен вернуться к клиентскому прямоугольнику. Поскольку эти значения представляют экстент текстового объекта, они являются входными и выходными данными в координатах HIMETRIC (каждая единица HIMETRIC составляет 0,01 миллиметра), а измерение не включает коэффициент масштабирования. Описание коэффициента масштабирования см. в разделе TxGetExtent.
 

psizelExtent

Тип: const SIZEL*

Размеры экстентов (в единицах HIMETRIC), используемых для масштабирования.

pwidth

Тип: LONG*

Ширина установки, определяемая dwMode.

pheight

Тип: LONG*

Высота установки, определяемая dwMode.

pascent

Тип: LONG*

Для однострочных элементов управления получает восхождение (единицы выше базового плана) символов в верхней строке текста.

Возвращаемое значение

Тип: HRESULT

Если метод выполнен успешно, возвращаемое значение будет S_OK.

Если текстовым службам не удалось активировать объект, возвращаемым значением будет один из следующих кодов HRESULT . Дополнительные сведения о кодах ошибок COM см. в разделе Обработка ошибок в COM.

Код возврата Описание
E_FAIL
Не удается определить правильный размер.
E_INVALIDARG
Один или несколько аргументов недопустимы.
E_OUTOFMEMORY
Недостаточно памяти.

Комментарии

Первые четыре параметра похожи на эквивалентные параметры в ITextServices::TxDraw и предоставляют те же сведения. В случае, когда строки должны быть пересчитаны, TxGetNaturalSize2 использует эти значения так же, как в ITextServices::TxDraw.

Параметры pwidth и pheight являются параметрами in/out. Узел передает предварительную ширину и высоту естественного экстента текстового объекта. Объект текстовых служб сравнивает эти значения с текущим кэшированным состоянием и, если они отличаются, пересчитывает строки. Затем он вычисляет и возвращает естественный размер, как указано в dwMode.

Примеры

В следующем примере показано, как инициализировать параметр psizelExtent для с коэффициентом масштабирования 1:1. Многоточие указывает на код, который необходимо предоставить.


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))) 

Требования

   
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Целевая платформа Windows
Header textserv.h
DLL Msftedit.dll

См. также раздел

ITextServices2