次の方法で共有


GDI リソースの割り当て

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

Note

詳細については、GDI+ SDK ドキュメントを参照してください。

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

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

作成した GDI オブジェクトを使用するには、OnPrint メンバー関数内のプリンター デバイス コンテキストで選択します。 ドキュメントの別のページで別の GDI オブジェクトが必要な場合は、CPrintInfo 構造体の m_nCurPage メンバーを調べて、対応する GDI オブジェクトを選択できます。 いくつかの連続するページで GDI オブジェクトが必要な場合は、OnPrint を呼び出すたびにデバイス コンテキストで選択する必要があります。

これらの GDI オブジェクトの割り当てを解除するには、OnEndPrinting メンバー関数をオーバーライドします。 フレームワークによって、各印刷ジョブの終了時に、この関数が呼び出されます。そのため、アプリケーションが他のタスクに戻る前に、印刷に固有の GDI オブジェクトの割り当てを解除できます。

関連項目

印刷
既定の印刷プロセス