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構造体は PAGESETUPDLG 型です。

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

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

Note

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

継承階層

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CPageSetupDialog

要件

Header: 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 ページの向きダイアログ コントロールを無効にします。

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

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

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

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

  • PSD_ENABLEPAGESETUPTEMPLATE オペレーティング システムは、 hInstance および lpSetupTemplateNameで識別されるダイアログ テンプレート ボックスを使用してダイアログ ボックスを作成します。

  • PSD_ENABLEPAGESETUPTEMPLATEHANDLE プリロードされたダイアログ ボックス テンプレートを含むデータ ブロックを識別 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

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

LPDEVMODE GetDevMode() const;

戻り値

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

CPageSetupDialog::GetDriverName

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

CString GetDriverName() const;

戻り値

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

解説

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

CPageSetupDialog::GetMargins

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

void GetMargins(
    LPRECT lpRectMargins,
    LPRECT lpRectMinMargins) const;

パラメーター

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

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

CPageSetupDialog::GetPaperSize

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

CSize GetPaperSize() const;

戻り値

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

CPageSetupDialog::GetPortName

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

CString GetPortName() const;

戻り値

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

CPageSetupDialog::m_psd

ダイアログ オブジェクトの特性を格納するメンバーを持つ PAGESETUPDLG 型の構造体。

PAGESETUPDLG m_psd;

解説

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

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

PAGESETUPDLG 構造体の詳細については、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_GREEKTEXTRECTします。

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

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

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

戻り値

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

解説

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

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

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 構造体へのポインター。 PAGESETUPDLGの詳細については、Windows SDK を参照してください。

戻り値

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

解説

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

関連項目

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