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
请求的拟合类型。 可以是以下任一项。
值 | 含义 |
---|---|
|
使用英语公制单位 (ETU) 而不是像素作为测量单位, (此方法参数的双向) 。 |
|
通过将文本格式化为传入的宽度,调整控件的大小以适应整个文本。 文本服务对象返回整个文本的高度和最宽行的宽度。
例如,当用户双击控件的句柄之一时,应执行此操作。 |
|
调整控件的大小,使其适合缩进的内容。 |
|
调整控件的大小,使其适合缩进内容和尾随空格。 |
|
调整控件的大小,使其适合未识别的内容和尾随空格。 |
|
对于纯文本控件,在计算大小时包括最终回车符的高度。 |
|
调整控件的大小以显示整型行数, () 不剪裁任何行。 设置足够的文本格式以填充传入的宽度和高度,然后返回舍入到最接近的线条边界的高度。
注意 传递和返回的宽度和高度对应于视图矩形。 主机应根据需要调整回客户端矩形。 由于这些值表示文本对象的范围,因此它们采用 HIMETRIC 坐标 (每个 HIMETRIC 单位为 0.01 毫米) ,并且度量值不包括任何缩放因子。 有关缩放因子的讨论,请参阅 TxGetExtent。
|
psizelExtent
类型: const SIZEL*
) 用于缩放的 (以 HIMETRIC 单位为单位的盘区的大小。
pwidth
类型: LONG*
dwMode 定义的管接头的宽度。
pheight
类型: LONG*
dwMode 定义的管接头的高度。
pascent
类型: LONG*
对于单行控件,接收高于基线) 文本首行字符的上升 (单位。
返回值
类型: HRESULT
如果方法成功,则返回值 S_OK。
如果文本服务无法激活 对象,则返回值为以下 HRESULT 代码之一。 有关 COM 错误代码的详细信息,请参阅 COM 中的错误处理。
返回代码 | 说明 |
---|---|
|
无法确定正确的大小。 |
|
一个或多个参数无效。 |
|
内存不足。 |
注解
前四个参数类似于 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 |
标头 | textserv.h |
DLL | Msftedit.dll |