DEVMODE 構造体の dmFields について

概要

この技術情報では、プリンタ ドライバが  DM_COPIES フラグを未サポートにした場合の留意点について記述します。

現象

複数の DEVMODE 構造体が割り当てられた拡張メタファイル (NT EMF) の印刷では、2 つめ以降の DEVMODE 構造体が反映されないことがあります。
標準のプリントプロセッサ(WinPrint)では、 拡張メタファイル (NT EMF) の印刷において、プリンタ デバイスが、1 部以上の部数をサポートしていることを前提としています。この前提において、dmFields に DM_COPIES フラグが設定されていない DEVMODE 構造体を検知した場合、標準のプリント プロセッサ (WinPrint) は、リカバリー処理として最初に検知した DEVMODE 構造体に対して部数の設定を行ったデバイス コンテキストを使用します。
このリカバリーに伴い 2 つめ以降の DEVMODE 構造体を使用しているデバイス コンテキストがリセットされ、2 ページ目以降のページがアプリケーションが指定した DEVMODE 構造体とは異なる設定で印刷されることがあります。

解決方法

プリンタ ドライバは、DEVMODE 構造体の dmFields に DM_COPIES フラグを設定することを推奨します。この設定により、標準のプリントプロセッサ (WinPrint) のリカバリー処理が実施されないため、アプリケーションが指定した DEVMODE 構造体の設定で印刷されます。

詳細

プリンタ デバイスが、2 部以上の複数部数をサポートしていない場合、プリンタ ドライバの Interface DLL の DrvDeviceCapabilities 関数で DC_COPIES の問い合わせに対して常に 1 を通知します。この通知を行うとアプリケーションは、プリンタ デバイスの最大部数を把握することができます。
プロパティ

文書番号:2953316 - 最終更新日: 2016/09/29 - リビジョン: 1

フィードバック