ATL_DRAWINFO 结构

包含用于呈现到各种目标(例如打印机、元文件或 ActiveX 控件)的信息。

语法

struct ATL_DRAWINFO {
    UINT cbSize;
    DWORD dwDrawAspect;
    LONG lindex;
    DVTARGETDEVICE* ptd;
    HDC hicTargetDev;
    HDC hdcDraw;
    LPCRECTL prcBounds;
    LPCRECTL prcWBounds;
    BOOL bOptimize;
    BOOL bZoomed;
    BOOL bRectInHimetric;
    SIZEL ZoomNum;
    SIZEL ZoomDen;
};

成员

cbSize
结构大小(以字节为单位)。

dwDrawAspect
指定要如何表示该目标。 表示形式可以包括内容、图标、缩略图或打印的文档。 有关可能值的列表,请参阅 DVASPECTDVASPECT2

lindex
与绘制操作有关的目标部分。 其解释因 dwDrawAspect 成员中的值而异。

ptd
指向 DVTARGETDEVICE 结构的指针,该结构支持绘图优化,具体取决于指定内容。 请注意,支持优化绘图接口的较新对象和容器也支持此成员。 不支持优化绘图接口的旧对象和容器始终为此成员指定 NULL。

hicTargetDev
ptd 指向的目标设备的信息上下文,对象可从该上下文提取设备量度并测试设备的功能。 如果 ptd 为 NULL,则对象应忽略 hicTargetDev 成员中的值。

hdcDraw
要进行绘制的设备上下文。 对于无窗口对象,hdcDraw 成员处于 MM_TEXT 映射模式,其逻辑坐标与包含窗口的客户端坐标相匹配。 此外,该设备上下文的状态应与 WM_PAINT 消息通常传递的上下文状态相同。

prcBounds
指向一个 RECTL 结构的指针,该结构指定要在其中绘制对象的 hdcDraw 上的矩形。 此成员控制对象的定位和拉伸。 此成员应为 NULL,以绘制无窗口就地活动对象。 在其他情况下,NULL 不是合法值,会导致 E_INVALIDARG 错误代码。 如果容器将非 NULL 值传递给无窗口对象,该对象应将请求的内容呈现到指定的设备上下文和矩形中。 容器可以从无窗口对象请求此操作,以呈现该对象的第二个非活动视图或打印该对象。

prcWBounds
如果 hdcDraw 为图元文件设备上下文(请参阅 Windows SDK 中的 GetDeviceCaps),则这是指向在基础图元文件中指定边界矩形的 RECTL 结构的指针。 矩形结构包含窗口范围和窗口原点。 这些值可用于绘制图元文件。 prcBounds 指示的矩形嵌套在此 prcWBounds 矩形内;它们位于同一坐标空间中。

bOptimize
如果要优化控件的绘图,则为非零值,否则为 0。 如果绘图已优化,则完成呈现后,将自动还原设备上下文的状态。

bZoomed
如果目标具有缩放因子,则为非零值,否则为 0。 缩放因子存储在 ZoomNum 中。

bRectInHimetric
如果 prcBounds 的尺寸以 HIMETRIC 为单位,则为非零值,否则为 0。

ZoomNum
矩形的宽度和高度(对象呈现到该矩形中)。 沿目标 x 轴的缩放因子(对象自然大小与其当前范围的比例)是 ZoomNum.cx 值除以 ZoomDen.cx 值后得到的值。 沿 y 轴的缩放因子以类似的方式实现。

ZoomDen
目标的实际宽度和高度。

备注

此结构的典型用法是在呈现目标对象期间检索信息。 例如,可以从 CComControlBase::OnDrawAdvanced 重载中的 ATL_DRAWINFO 检索值。

此结构存储用于呈现目标设备对象外观的相关信息。 提供的信息可用于绘制到屏幕、打印机,甚至图元文件。

要求

标头:atlctl.h

另请参阅

类和结构
IViewObject::Draw
CComControlBase::OnDrawAdvanced