次の方法で共有


GDI リソースの割り当て

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

印刷には特定のフォント、ペン、またはその他の GDI オブジェクトを使用する必要がありますが、画面表示には使用しない必要があるとします。 必要なメモリがあるため、アプリケーションの起動時にこれらのオブジェクトを割り当てるのは非効率的です。 アプリケーションがドキュメントを印刷していない場合は、そのメモリが他の目的で必要になる場合があります。 印刷開始時に割り当ててから、印刷終了時に削除することをお勧めします。

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

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

これらの GDI オブジェクトの割り当てを解除するには、 OnEndPrinting メンバー関数をオーバーライドします。 フレームワークは、各印刷ジョブの最後にこの関数を呼び出し、アプリケーションが他のタスクに戻る前に印刷固有の GDI オブジェクトの割り当てを解除する機会を与えます。

こちらも参照ください

印刷
既定の印刷の実行方法