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