CPageSetupDialog クラス

印刷マージンの設定や変更の追加サポートと共に [OLE ページの設定] ダイアログ ボックスにより提供されるサービスをカプセル化します。

構文

class CPageSetupDialog : public CCommonDialog

メンバー

パブリック コンストラクター

名前 説明
CPageSetupDialog::CPageSetupDialog CPageSetupDialog オブジェクトを構築します。

パブリック メソッド

名前 説明
CPageSetupDialog::CreatePrinterDC 印刷用のデバイス コンテキストを作成します。
CPageSetupDialog::D oModal ダイアログ ボックスを表示し、ユーザーが選択できるようにします。
CPageSetupDialog::GetDeviceName プリンターのデバイス名を返します。
CPageSetupDialog::GetDevMode プリンターの現在の DEVMODE を返します。
CPageSetupDialog::GetDriverName プリンターで使用されるドライバーを返します。
CPageSetupDialog::GetMargins プリンターの現在の余白の設定を返します。
CPageSetupDialog::GetPaperSize プリンターの用紙サイズを返します。
CPageSetupDialog::GetPortName 出力ポート名を返します。
CPageSetupDialog::OnDrawPage 印刷されたページの画面イメージをレンダリングするためにフレームワークによって呼び出されます。
CPageSetupDialog::P reDrawPage 印刷されたページの画面イメージをレンダリングする前に、フレームワークによって呼び出されます。

パブリック データ メンバー

名前 説明
CPageSetupDialog::m_psd オブジェクトをカスタマイズするために使用される CPageSetupDialog 構造体。

解説

このクラスは、[印刷設定] ダイアログ ボックスの代わりに使用するように設計されています。

オブジェクトを CPageSetupDialog 使用するには、まずコンストラクターを使用してオブジェクトを CPageSetupDialog 作成します。 ダイアログ ボックスが作成されたら、データ メンバー内の任意の値を m_psd 設定または変更して、ダイアログ ボックスのコントロールの値を初期化できます。 m_psd構造体は PAGE Standard Edition TUPDLG 型です。

ダイアログ ボックス コントロールを初期化した後、メンバー関数を DoModal 呼び出してダイアログ ボックスを表示し、ユーザーが印刷オプションを選択できるようにします。 DoModal は、ユーザーが OK (IDOK) またはキャンセル (IDCANCEL) ボタンを選択したかどうかを返します。

IDOK が返された場合 DoModal は、いくつかの CPageSetupDialogメンバー関数を使用するか、データ メンバーに m_psd アクセスして、ユーザーが入力した情報を取得できます。

Note

一般的な [OLE ページ設定] ダイアログ ボックスを閉じると、ユーザーが行った変更はフレームワークによって保存されません。 このダイアログ ボックスから永続的な場所 (アプリケーションのドキュメントやアプリケーション クラスのメンバーなど) に値を保存するのは、アプリケーション自体に任されています。

継承階層

CObject

CCmdTarget

CWnd

Cdialog

CCommonDialog

CPageSetupDialog

必要条件

ヘッダー: afxdlgs.h

CPageSetupDialog::CPageSetupDialog

オブジェクトを構築するには、この関数を CPageSetupDialog 呼び出します。

CPageSetupDialog(
    DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
    CWnd* pParentWnd = NULL);

パラメーター

dwFlags
ダイアログ ボックスの設定をカスタマイズするために使用できる 1 つ以上のフラグ。 値は、ビットごとの OR 演算子を使用して結合できます。 これらの値には次の意味があります。

  • PSD_DEFAULTMINMARGINS ページ余白の最小許容幅をプリンターの最小値と同じに設定します。 PSD_MARGINSフラグとPSD_MINMARGINS フラグも指定されている場合、このフラグは無視されます。

  • PSD_INWININIINTLMEASURE実装されていません。

  • PSD_MINMARGINS メンバーで rtMinMargin 指定された値を、左、上、右、および下の余白の最小許容幅として使用します。 システムは、ユーザーが指定された最小値より小さい幅を入力できないようにします。 PSD_MINMARGINSが指定されていない場合、システムは、プリンターで許可される最小の幅を設定します。

  • PSD_MARGINS 余白コントロール領域をアクティブにします。

  • PSD_INTHOUSANDTHSOFINCHES ダイアログ ボックスの単位を 1/1000 インチ単位で測定します。

  • PSD_INHUNDREDTHSOFMILLIMETERS ダイアログ ボックスの単位をミリメートルの 1/100 単位で測定します。

  • PSD_DISABLEMARGINS 余白ダイアログ ボックス コントロールを無効にします。

  • PSD_DISABLEPRINTER プリンター ボタンを無効にします。

  • PSD_NOWARNING 既定のプリンターがない場合に警告メッセージが表示されないようにします。

  • PSD_DISABLEORIENTATION ページの向きダイアログ コントロールを無効にします。

  • CPageSetupDialog PSD_RETURNDEFAULT ダイアログ ボックスを表示せずに、システムの既定のプリンター用に初期化された DEVMODE および DEVNAMES 構造体を返します。 両方hDevNameshDevModeとも NULL であると見なされます。それ以外の場合、関数はエラーを返します。 システムの既定のプリンターが古いプリンター ドライバー (Windows バージョン 3.0 より前) でサポートされている場合は、NULL のみが hDevNames 返されます hDevMode

  • PSD_DISABLEPAPER 用紙選択コントロールを無効にします。

  • PSD_SHOWHELP ダイアログ ボックスに [ヘルプ] ボタンが表示されます。 このフラグが指定されている場合、メンバーは hwndOwner NULL にすることはできません。

  • PSD_ENABLEPAGEStandard Edition TUPHOOK で指定されたlpfnSetupHookフック関数を有効にします。

  • PSD_ENABLEPAGEStandard Edition TUPTEMPLATE によって識別されるhInstanceダイアログ テンプレート ボックスを使用して、オペレーティング システムがダイアログ ボックスを作成しますlpSetupTemplateName

  • PSD_ENABLEPAGEStandard Edition TUPTEMPLATEHANDLE プリロードされたダイアログ ボックス テンプレートを含むデータ ブロックを識別することをhInstance示します。 このフラグが lpSetupTemplateName 指定されている場合、システムは無視します。

  • PSD_ENABLEPAGEPAINTHOOK で指定したフック関数を lpfnPagePaintHook有効にします。

  • PSD_DISABLEPAGEPAINTING ダイアログ ボックスの描画領域を無効にします。

pParentWnd
ダイアログ ボックスの親または所有者へのポインター。

解説

DoModal 関数を使用して、ダイアログ ボックスを表示します。

void CMyRichEditView::OnPageSetupDlg()
{
   CPageSetupDialog psd(PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS |
      PSD_ENABLEPAGEPAINTHOOK, this);

   // Initialize margins
   psd.m_psd.rtMargin.top = 1000;
   psd.m_psd.rtMargin.left = 1250;
   psd.m_psd.rtMargin.right = 1250;
   psd.m_psd.rtMargin.bottom = 1000;
   psd.m_psd.lpfnPagePaintHook = (LPPAGEPAINTHOOK)PaintHook;

   if (IDOK == psd.DoModal())
   {
      // Propagate changes to the app
      AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);
   }
   else
   {
      TRACE(_T("CommDlgExtendedError returned error %d from ")
         _T("CPageSetupDialog::DoModal().\n"),
         (int)CommDlgExtendedError());
   }
}

CPageSetupDialog::CreatePrinterDC

DEVMODE 構造体と DEVNAMES 構造体からプリンター デバイス コンテキストを作成します。

HDC CreatePrinterDC();

戻り値

新しく作成されたプリンター デバイス コンテキスト (DC) を処理します。

CPageSetupDialog::D oModal

この関数を呼び出して、Windows の [OLE ページのセットアップ] ダイアログ ボックスを表示し、印刷余白、用紙のサイズと向き、印刷先プリンターなど、さまざまな印刷設定オプションを選択できるようにします。

virtual INT_PTR DoModal();

戻り値

IDOK または IDCANCEL。 IDCANCEL が返された場合は、Windows CommDlgExtendedError 関数を呼び出して、エラーが発生したかどうかを判断します。

IDOK と IDCANCEL は、ユーザーが [OK] または [キャンセル] ボタンを選択したかどうかを示す定数です。

解説

さらに、ユーザーは、ネットワークの場所や、選択したプリンターに固有のプロパティなどのプリンターのセットアップ オプションにアクセスできます。

構造体のメンバーを設定してさまざまな [ページ設定] ダイアログ オプションを m_psd 初期化する場合は、呼び出す DoModal前に、ダイアログ オブジェクトが構築された後に初期化する必要があります。 呼び出した DoModal後、他のメンバー関数を呼び出して、ユーザーがダイアログ ボックスに入力した設定または情報を取得します。

ユーザーが入力した現在の設定を伝達する場合は、CWinApp::SelectPrinter呼び出します。 この関数は、オブジェクトから情報を CPageSetupDialog 受け取り、適切な属性を持つ新しいプリンター DC を初期化して選択します。

AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);

CPageSetupDialog::CPageSetupDialog の例を参照してください。

CPageSetupDialog::GetDeviceName

現在選択されているプリンターの名前を取得するには、後 DoModal でこの関数を呼び出します。

CString GetDeviceName() const;

戻り値

オブジェクトによって使用される CPageSetupDialog デバイス名。

CPageSetupDialog::GetDevMode

呼び出し後にこの関数を呼び出 DoModal して、オブジェクトのプリンター デバイス コンテキストに関する情報を CPageSetupDialog 取得します。

LPDEVMODE GetDevMode() const;

戻り値

DEVMODE データ構造。印刷ドライバーのデバイスの初期化と環境に関する情報が含まれます。 Windows SDK で説明されている Windows GlobalUnlock 関数を使用して、この構造体によって取得されたメモリのロックを解除する必要があります。

CPageSetupDialog::GetDriverName

DoModal を呼び出してシステム定義プリンター デバイス ドライバーの名前を取得した後、この関数を呼び出します。

CString GetDriverName() const;

戻り値

CStringシステム定義ドライバー名を指定します。

解説

CDC::CreateDC のCString呼び出しで返されるGetDriverNameオブジェクトへのポインターをlpszDriverNameとして使用します

CPageSetupDialog::GetMargins

プリンター デバイス ドライバーの余白を取得する DoModal 呼び出しの後に、この関数を呼び出します。

void GetMargins(
    LPRECT lpRectMargins,
    LPRECT lpRectMinMargins) const;

パラメーター

lpRectMargins
現在選択されているプリンターの印刷余白 (1/1000 インチまたは 1/100 mm) を表す RECT 構造体または CRect オブジェクトへのポインター。 この四角形に関心がない場合は、このパラメーターに NULL を渡します。

lpRectMinMargins
RECT現在選択されているプリンターの最小印刷余白 (1/1000 インチまたは 1/100 mm) を表す構造体またはCRectオブジェクトへのポインター。 この四角形に関心がない場合は、このパラメーターに NULL を渡します。

CPageSetupDialog::GetPaperSize

この関数を呼び出して、印刷用に選択した用紙のサイズを取得します。

CSize GetPaperSize() const;

戻り値

印刷用に選択された用紙のサイズ (1/1000 インチまたは 1/100 mm) を含む CSize オブジェクト。

CPageSetupDialog::GetPortName

現在選択されているプリンター ポートの名前を取得するには、呼び出し後にこの関数を呼び出 DoModal します。

CString GetPortName() const;

戻り値

現在選択されているプリンター ポートの名前。

CPageSetupDialog::m_psd

PAGE Standard Edition TUPDLG 型の構造体。メンバーがダイアログ オブジェクトの特性を格納します。

PAGESETUPDLG m_psd;

解説

オブジェクトをCPageSetupDialog構築した後、メンバー関数を呼び出す前に、ダイアログ ボックスのさまざまな側面をDoModal設定するために使用m_psdできます。

データ メンバーを m_psd 直接変更する場合は、既定の動作をオーバーライドします。

PAGE Standard Edition TUPDLG 構造体の詳細については、Windows SDK を参照してください。

CPageSetupDialog::CPageSetupDialog の例を参照してください。

CPageSetupDialog::OnDrawPage

印刷されたページの画面イメージを描画するためにフレームワークによって呼び出されます。

virtual UINT OnDrawPage(
    CDC* pDC,
    UINT nMessage,
    LPRECT lpRect);

パラメーター

pDC
プリンター デバイス コンテキストへのポインター。

nMessage
現在描画されているページの領域を示すメッセージを指定します。 以下のいずれかを指定できます。

  • WM_PSD_FULLPAGERECT ページ領域全体。

  • [現在の最小余白] をWM_PSD_MINMARGINRECTします。

  • 現在の余白をWM_PSD_MARGINRECTします。

  • WM_PSD_GREnterprise Edition KTEXTRECT ページの内容。

  • WM_PSD_ENVSTAMPRECT切手の表現のために予約されたエリア。

  • 戻り値の住所表現のWM_PSD_YAFULLPAGERECT領域。 この領域は、サンプル ページ領域の端まで拡張されます。

lpRect
描画領域の座標を 含む CRect オブジェクトまたは RECT オブジェクトへのポインター。

戻り値

処理された場合は 0 以外の値。それ以外の場合は 0。

解説

このイメージは、一般的な [OLE ページ設定] ダイアログ ボックスの一部として表示されます。 既定の実装では、テキストのページのイメージが描画されます。

イメージの特定の領域またはイメージ全体の描画をカスタマイズするには、この関数をオーバーライドします。 これを行うには、ステートメントと nMessage case値をチェックステートメントを使用switchします。 たとえば、ページ イメージの内容のレンダリングをカスタマイズするには、次のコード例を使用できます。

switch (nMessage)
{
case WM_PSD_GREEKTEXTRECT:
   DrawMyImage(pDC, lpRect);    //draws my special graphic
   return 1;
default:
   return CPageSetupDialog::OnDrawPage(pDC, nMessage, lpRect);
}

nMessage のすべてのケースを処理する必要はありません。 イメージの 1 つのコンポーネント、イメージの複数のコンポーネント、または領域全体を処理することを選択できます。

CPageSetupDialog::P reDrawPage

印刷されたページの画面イメージを描画する前に、フレームワークによって呼び出されます。

virtual UINT PreDrawPage(
    WORD wPaper,
    WORD wFlags,
    LPPAGESETUPDLG pPSD);

パラメーター

wPaper
用紙サイズを示す値を指定します。 この値には、DEVMODE 構造体の説明に記載されているDMPAPER_値のいずれかを指定できます。

wFlags
用紙または封筒の向きを示し、プリンターがドット マトリックスか HPPCL (Hewlett Packard プリンター制御言語) デバイスかを示します。 このパラメーターには、次のいずれかの値を指定できます。

  • 横モードの0x001用紙 (ドット マトリックス)

  • 横モードの0x003用紙 (HPPCL)

  • 縦モードの0x005用紙 (ドット マトリックス)

  • 縦モードの0x007用紙 (HPPCL)

  • 横モードの0x00bエンベロープ (HPPCL)

  • 縦モードの0x00d封筒 (ドット マトリックス)

  • 横モードの0x019エンベロープ (ドット マトリックス)

  • 縦モードの0x01f封筒 (ドット マトリックス)

pPSD
PAGESETUPDLG 構造体へのポインター。 PAGE Standard Edition TUPDLG詳細については、Windows SDK を参照してください。

戻り値

処理された場合は 0 以外の値。それ以外の場合は 0。

解説

イメージの描画をカスタマイズするには、この関数をオーバーライドします。 この関数をオーバーライドして TRUE を返す場合は、イメージ全体を描画する必要があります。 この関数をオーバーライドして FAL Standard Edition を返すと、既定のイメージ全体がフレームワークによって描画されます。

関連項目

MFC サンプル ワードパッド
CCommonDialog クラス
階層図