本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSVC]印刷プレビューでのリージョンの使用方法

文書番号: 402004

最終更新日: 2003/11/11


この資料は以下の製品について記述したものです。


概要

この資料は MFC 2.0 の印刷プレビューでリージョンを使用する一つの方法を紹介
したものです。

詳細

印刷プレビューでは CPreviewDC という CDC クラスの派生クラスを利用してプリンタ の出力イメージの表現をディスプレイ上で実現しています。この時、物理座標系がプリ ンタ用になっている為に、リージョンの様に物理座標系を使用する物は表示が正常に行 われません。以下の様に CPreviewDC クラスの PrinterDPtoScreenDP() を使用して物理 座標をプリンタ用からスクリーン用へ変換してください。
なお、CPreview クラスを利用するために以下の行を"stdafx.h"等のインクルードの後 に追加してください。
  #include "afxpriv.h"  // この行を追加

<使用例>

  void CRegionView::OnDraw(CDC* pDC)
  {
      CRegionDoc* pDoc = GetDocument();
      ASSERT_VALID(pDoc);
      CRect   Rect(100, 100, 500, 500);
      pDC->LPtoDP(&Rect);
      if (pDC->IsKindOf(RUNTIME_CLASS(CPreviewDC))) {
          CPreviewDC *pPDC = (CPreviewDC *)pDC;
          pPDC->PrinterDPtoScreenDP(&Rect.TopLeft());
          pPDC->PrinterDPtoScreenDP(&Rect.BottomRight());
          CPoint  Offset;
          ::GetViewportOrgEx(pDC->m_hDC, &Offset);
          Rect += Offset;
      }
      CRgn*   pRgn = new CRgn;
      pRgn->CreateRectRgnIndirect(&Rect);
      pDC->SelectClipRgn(pRgn);
      for (int i = 0;i < 300;i += 20)
          pDC->Ellipse(i, i, 600 - i, 600 - i);
      pDC->SelectClipRgn(NULL);
      for (int j = 0;j < 300;j += 20)
          pDC->Ellipse(600 + j, j, 1200 - j, 600 - j);
      delete  pRgn;
  }

詳細

  • Visual C++ は、米国 Microsoft Corporation の登録商標です。

Keywords: KBHOWTO VC10 KB402004
Technology: kbAudDeveloper kbVCsearch

inserted by FC2 system