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
オブジェクトを描画する hdcDraw
上の四角形を指定する RECTL 構造体へのポインター。 このメンバーで、オブジェクトの配置と伸縮を制御します。 ウィンドウレス インプレース アクティブ オブジェクトを描画するには、このメンバーを NULL にする必要があります。 その他の状況の場合、NULL は有効な値ではなく、E_INVALIDARG
エラー コードになります。 コンテナーからウィンドウレス オブジェクトに対して NULL 以外の値が渡された場合、オブジェクトにより、要求されたアスペクトを指定されたデバイス コンテキストと四角形にレンダリングする必要があります。 コンテナーにより、ウィンドウレス オブジェクトからこれを要求することで、オブジェクトの 2 つ目の非アクティブなビューをレンダリングすることや、オブジェクトを出力することができます。
prcWBounds
hdcDraw
がメタファーイル デバイス コンテキスト (Windows SDK の GetDeviceCaps のページを参照してください) の場合、これは、基となるメタファイル内の境界四角形を指定する RECTL
構造体へのポインターです。 rectangle 構造体には、ウィンドウの範囲とウィンドウの原点が含まれています。 これらの値はメタファイルの描画に役立ちます。 prcBounds
で示される四角形は、この prcWBounds
四角形の内側に入れ子になっており、同じ座標空間にあります。
bOptimize
コントロールの描画が最適化される場合は 0 以外、それ以外の場合は 0 です。 描画が最適化されている場合は、レンダリングを完了するとデバイス コンテキストの状態が自動的に復元されます。
bZoomed
ターゲットに拡大/縮小率がある場合は 0 以外、それ以外の場合は 0 です。 拡大/縮小率は ZoomNum
に格納されます。
bRectInHimetric
prcBounds
の寸法が HIMETRIC の場合は 0 以外、それ以外の場合は 0 です。
ZoomNum
オブジェクトがレンダリングされる四角形の幅と高さ。 ターゲットの x 軸方向の拡大/縮小率 (オブジェクトの自然なサイズと現在の範囲との比率) は、ZoomNum.cx
の値を ZoomDen.cx
の値で割ったものです。 y 軸方向の拡大/縮小率も同様の方法で得られます。
ZoomDen
ターゲットの実際の幅と高さ。
解説
この構造体の一般的な使い方は、ターゲット オブジェクトのレンダリング中に情報を取得することです。 たとえば、CComControlBase::OnDrawAdvanced のオーバーロード内で、ATL_DRAWINFO から値を取得することができます。
この構造体には、オブジェクトの外観をターゲット デバイス用にレンダリングするための関連情報が格納されます。 指定された情報は、画面、プリンター、またはメタファイルへの描画に使用できます。
要件
ヘッダー: atlctl.h