次の方法で共有


GDI リソースの割り当て

更新 : 2007 年 11 月

ここでは、印刷に必要な Windows グラフィック デバイス インターフェイス (GDI: Graphics Device Interface) オブジェクトの割り当ておよび割り当て解除の方法について説明します。

c6c5zh3k.alert_note(ja-jp,VS.90).gifメモ :

Windows XP には GDI+ が含まれています。また、Windows NT 4.0 SP6、Windows 2000、Windows 98、および Windows Me 対応の再頒布可能な GDI+ も用意されています。最新の再頒布パッケージをダウンロードするには、https://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm を参照してください。詳細については、MSDN の GDI+ SDK のドキュメント (https://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/GDIPlus/GDIPlus.asp) を参照してください。

画面表示用ではなく印刷用にフォントやペンなどの GDI オブジェクトを使用する必要があるとします。必要なメモリを考えると、アプリケーション起動時に各オブジェクトを割り当てるのは効率的ではありません。アプリケーションがドキュメントを印刷していない場合、その分のメモリがほかの目的に必要とされていることがあります。印刷の開始時に割り当てを開始し、終了時に割り当てを解除するようにしてください。

GDI オブジェクトを割り当てるには、OnBeginPrinting メンバ関数をオーバーライドします。この関数は、この目的に対して 2 つの理由で適しています。まず、フレームワークが、各印刷ジョブの開始時にこの関数を一度ずつ呼び出すこと、次に、OnPreparePrinting とは異なり、この関数ではプリンタ デバイス ドライバを表す CDC オブジェクトにアクセスできることです。ビュー クラスで GDI オブジェクトを指すメンバ変数 (たとえば、CFont * メンバなど) を定義して、これらのオブジェクトを格納し、印刷ジョブで使用できます。

作成した GDI オブジェクトを使用するには、OnPrint メンバ関数のプリンタ デバイス コンテキストに対してそれらを選択します。異なるページのドキュメントに対して異なる GDI オブジェクトが必要な場合、CPrintInfo 構造体の m_nCurPage メンバを検証し、それを基に GDI オブジェクトを選択できます。連続する複数ページに対して GDI オブジェクトが必要な場合、OnPrint が呼び出されるたびにデバイス コンテキストに対してそれを選択する必要があります。

この GDI オブジェクトの割り当てを解除するには、OnEndPrinting メンバ関数をオーバーライドします。印刷ジョブの終了時にこの関数が呼び出され、アプリケーションがほかのタスクに移る前に印刷固有の GDI オブジェクトの割り当てを解除できるようになります。

参照

参照

印刷

既定の印刷プロセス