次の方法で共有


CDC::SetAbortProc

印刷ジョブのアボート プロシージャをインストールします。

int SetAbortProc(
   BOOL ( CALLBACK* lpfn )( HDC, int )
);

パラメーター

  • lpfn
    アボート プロシージャとしてインストールするためのアボート関数へのポインターです。 コールバック関数の詳細については、「CDC::SetAbortProc 用コールバック関数」を参照してください。

戻り値

SetAbortProc 関数の結果を示します。 次の値のいずれかの可能性があります。

  • SP_ERROR   一般的なエラーです。

  • SP_OUTOFDISK   現在、スプールに必要なディスク領域が十分でなく、領域が回復される見込みがないことを示します。

  • SP_OUTOFMEMORY   スプールに必要なメモリが十分にないことを示します。

  • SP_USERABORT   ユーザーがプリント マネージャーを使ってジョブを終了させたことを示します。

解説

アプリケーションがスプール中に印刷ジョブを取り消すことができるようにするには、StartDoc メンバー関数を使って印刷ジョブが開始される前にアボート関数を設定しておく必要があります。 スプール中に、アプリケーションが印刷ジョブを取り消したり、ディスクの空きがなくなった状態を処理するために、プリント マネージャーがアボート関数を呼び出します。 アボート関数が設定されていないと、スプールのために十分なディスク領域がない場合、印刷ジョブは失敗します。

Microsoft Visual C++ では、SetAbortProc に渡すコールバック関数を簡単に作成できます。 EnumObjects メンバー関数に渡すアドレスは、関数のポインターで、この関数は __declspec (dllexport) でエクスポートされ、__stdcall の呼び出し規約に従う必要があります。

また、関数名をアプリケーションのモジュール定義ファイルの EXPORTS ステートメントでエクスポートする必要もありません。 その代わりに、次のように EXPORT 関数修飾子が使えます。

BOOL CALLBACK EXPORT AFunction( HDC, int );

このとき、コンパイラは、エイリアスを使わずに名前によるエクスポートで正しいエクスポート レコードを作成します。 ほとんどの処理は、この機能で対応できます。 特別な場合として、順に関数をエクスポートした場合やエイリアスを使用して関数をエクスポートした場合は、従来どおりモジュール定義ファイルに EXPORTS ステートメントを使用する必要があります。

コールバック関数の登録インターフェイスは現在はタイプ セーフです。関数のポインターには、特定のコールバックごとに正しい種類の関数へのポインターを渡す必要があります。

また、コールバック関数の外側で例外をスローすることができないので、Windows に戻る前にすべてのコールバック関数は MFC の例外を残らずキャッチする必要があることに注意してください。 例外の詳細については、「例外処理 (MFC)」を参照してください。

必要条件

**ヘッダー:**afxwin.h

参照

参照

CDC クラス

階層図

その他の技術情報

CDC のメンバー