ITextServices::TxDraw 方法 (textserv.h)
绘制文本服务对象。
语法
HRESULT TxDraw(
[in] DWORD dwDrawAspect,
LONG lindex,
[in] void *pvAspect,
[in] DVTARGETDEVICE *ptd,
[in] HDC hdcDraw,
[in] HDC hicTargetDev,
[in] LPCRECTL lprcBounds,
[in] LPCRECTL lprcWBounds,
[in] LPRECT lprcUpdate,
BOOL(* )(DWORD) pfnContinue,
DWORD dwContinue,
LONG lViewId
);
参数
[in] dwDrawAspect
类型: DWORD
指定要绘制的方面,即,要如何表示该对象。 绘图方面可以是以下值之一。
lindex
类型: LONG
不支持。
[in] pvAspect
类型: void*
有关绘图优化的信息。
[in] ptd
类型: DVTARGETDEVICE*
目标设备。
[in] hdcDraw
类型: HDC
呈现设备上下文。
[in] hicTargetDev
类型: HDC
目标信息上下文。
[in] lprcBounds
类型: LPCRECTL
边界 (客户端) 矩形。
[in] lprcWBounds
类型: LPCRECTL
图元文件剪裁矩形。
[in] lprcUpdate
类型: LPRECT
lprcBounds 中的更新区域。
pfnContinue
类型: BOOL CALLBACK*
不支持。
dwContinue
类型: DWORD
要传递给 continue 函数的参数。
lViewId
类型: LONG
指定要绘制的视图。
值 | 含义 |
---|---|
|
绘制就地活动视图。 |
|
绘制非就地活动视图的视图;例如打印预览。 |
返回值
类型: HRESULT
返回值通常是 S_OK。
注解
此方法呈现文本服务对象。 它接受与 OLE 中相应的 IViewObject::D raw 方法相同的参数,以及额外的 lprcUpdate 和 lViewId 参数。 当主机就地处于活动状态或处于非活动状态时,可以使用它。
lprcBounds 参数提供要呈现的矩形,也称为客户端矩形。 此矩形表示要绘制的文本服务对象的整个图像的位置和范围。 它以 hdcDraw 的逻辑坐标系表示。 如果 lprcBounds 为 NULL ,则控件必须处于活动状态。 在这种情况下,文本服务对象应呈现就地活动视图 (,即可以通过调用主机) 上的 TxGetClientRect 获取的客户端矩形。
如果 lprcUpdate 参数不为 NULL,它将提供该矩形,以在 hdcDraw 的逻辑坐标系中更新该客户端矩形。 如果 lprcUpdate 为 NULL,则应绘制整个客户端矩形。
文本服务对象应使用适当的缩放系数呈现,该比例可以从客户端矩形和 TxGetExtent 给定的本机大小中获取。 有关缩放系数的讨论,请参阅 TxGetExtent。
对于 ITextServices::OnTxSetCursor 和 ITextServices::TxQueryHitPoint) ,有关 OLE 主机和 ITextServices::TxDraw (的一般注释:
OLE 主机可以随时使用任何呈现设备上下文或客户端矩形调用 ITextServices::TxDraw 方法。 处于非活动状态的 OLE 对象仅保留一个盘区。 为了获取要在其中呈现的矩形,主机调用 IViewObject::D raw 方法。 此矩形仅对该方法的范围有效。 因此,同一控件可以在不同的矩形和不同的设备上下文中连续呈现,例如,因为它同时显示在屏幕上的不同视图中。
通常,不应缓存传递给 ITextServices::TxDraw 的客户端矩形和设备上下文,因为这将强制文本服务对象重新计算每次绘制的行,这会妨碍性能。 相反,文本服务对象可以缓存为特定客户端矩形和设备上下文 ((如换行符) )计算的信息。 但是,在下一次调用 ITextServices::TxDraw 时,应先检查缓存信息的有效性,然后再使用它,并在必要时重新生成更新的信息。
此外,当控件就地处于活动状态时,请小心谨慎。 此问题更为复杂,因为仍可调用 ITextServices::TxDraw 来呈现就地活动视图以外的其他视图。 换句话说,传递给 ITextServices::TxDraw 的客户端矩形可能与 (传递给 ITextServices::OnTxInPlaceActivate 并通过主机) 上的 TxGetClientRect 获取的活动矩形不同。
要求
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | textserv.h |
DLL | Msftedit.dll |
请参阅
概念性
其他资源
引用