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
指定要如何表示该目标。 表示形式可以包括内容、图标、缩略图或打印的文档。 有关可能值的列表,请参阅 DVASPECT 和 DVASPECT2。
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