Aracılığıyla paylaş


CPageSetupDialog Sınıfı

Windows ortak OLE Sayfa Yapısı iletişim kutusu tarafından sağlanan hizmetleri, yazdırma kenar boşluklarını ayarlama ve değiştirme için ek destekle kapsüller.

Sözdizimi

class CPageSetupDialog : public CCommonDialog

Üyeler

Ortak Oluşturucular

Ad Tanım
CPageSetupDialog::CPageSetupDialog Bir CPageSetupDialog nesne oluşturur.

Genel Yöntemler

Ad Tanım
CPageSetupDialog::CreatePrinterDC Yazdırma için bir cihaz bağlamı oluşturur.
CPageSetupDialog::D oModal İletişim kutusunu görüntüler ve kullanıcının seçim yapmasına izin verir.
CPageSetupDialog::GetDeviceName Yazıcının cihaz adını döndürür.
CPageSetupDialog::GetDevMode Yazıcının geçerli DEVMODE değerini döndürür.
CPageSetupDialog::GetDriverName Yazıcı tarafından kullanılan sürücüyü döndürür.
CPageSetupDialog::GetMargins Yazıcının geçerli kenar boşluğu ayarlarını döndürür.
CPageSetupDialog::GetPaperSize Yazıcının kağıt boyutunu döndürür.
CPageSetupDialog::GetPortName Çıkış bağlantı noktası adını döndürür.
CPageSetupDialog::OnDrawPage Yazdırılan bir sayfanın ekran görüntüsünü işlemek için çerçeve tarafından çağrılır.
CPageSetupDialog::P reDrawPage Yazdırılan bir sayfanın ekran görüntüsünü işlemeden önce çerçeve tarafından çağrılır.

Ortak Veri Üyeleri

Ad Tanım
CPageSetupDialog::m_psd Nesneyi özelleştirmek için kullanılan bir CPageSetupDialog yapı.

Açıklamalar

Bu sınıf, Yazdırma Kurulumu iletişim kutusunun yerini alacak şekilde tasarlanmıştır.

Bir CPageSetupDialog nesneyi kullanmak için önce oluşturucuyu CPageSetupDialog kullanarak nesnesini oluşturun. İletişim kutusu oluşturulduktan sonra, iletişim kutusunun denetimlerinin değerlerini başlatmak için veri üyesindeki m_psd herhangi bir değeri ayarlayabilir veya değiştirebilirsiniz. m_psd yapısı PAGESETUPDLG türündedir.

İletişim kutusu denetimlerini başlatdıktan sonra, iletişim kutusunu görüntülemek için üye işlevini çağırın DoModal ve kullanıcının yazdırma seçeneklerini belirlemesine izin verin. DoModal kullanıcının Tamam (IDOK) veya İptal (IDCANCEL) düğmesini seçerek seçmediğini döndürür.

IDOK döndürürse DoModal , kullanıcının bilgi girişini almak için 'nin birkaç CPageSetupDialogüye işlevini kullanabilir veya veri üyesine erişebilirsiniz m_psd .

Dekont

Ortak OLE Sayfa Yapısı iletişim kutusu kapatıldıktan sonra, kullanıcı tarafından yapılan değişiklikler çerçeve tarafından kaydedilmez. Bu iletişim kutusundaki değerleri uygulamanın belgesi veya uygulama sınıfının üyesi gibi kalıcı bir konuma kaydetmek uygulamanın kendisine aittir.

Devralma Hiyerarşisi

Cobject

Ccmdtarget

Cwnd

Cdialog

CCommonDialog

CPageSetupDialog

Gereksinimler

Üst bilgi: afxdlgs.h

CPageSetupDialog::CPageSetupDialog

Nesne oluşturmak CPageSetupDialog için bu işlevi çağır.

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

Parametreler

Dwflags
İletişim kutusunun ayarlarını özelleştirmek için kullanabileceğiniz bir veya daha fazla bayrak. Değerler bit düzeyinde OR işleci kullanılarak birleştirilebilir. Bu değerler aşağıdaki anlamlara sahiptir:

  • PSD_DEFAULTMINMARGINS Sayfa kenar boşlukları için izin verilen en düşük genişlikleri yazıcının minimumlarıyla aynı olacak şekilde ayarlar. PSD_MARGINS ve PSD_MINMARGINS bayrakları da belirtilirse bu bayrak yoksayılır.

  • PSD_INWININIINTLMEASURE Uygulanmadı.

  • PSD_MINMARGINS Sistemin sol, üst, sağ ve alt kenar boşlukları için izin verilen en düşük genişlikler olarak üyede rtMinMargin belirtilen değerleri kullanmasına neden olur. Sistem, kullanıcının belirtilen minimumdan küçük bir genişlik girmesini engeller. PSD_MINMARGINS belirtilmezse, sistem izin verilen en düşük genişlikleri yazıcı tarafından izin verilenlere ayarlar.

  • PSD_MARGINS Kenar boşluğu denetim alanını etkinleştirir.

  • PSD_INTHOUSANDTHSOFINCHES İletişim kutusunun birimlerinin bir inçin 1/1000'i cinsinden ölçülmeye neden olur.

  • PSD_INHUNDREDTHSOFMILLIMETERS İletişim kutusunun birimlerinin milimetrenin 1/100'ünün ölçülmüş olmasına neden olur.

  • PSD_DISABLEMARGINS Kenar boşluğu iletişim kutusu denetimlerini devre dışı bırakır.

  • PSD_DISABLEPRINTER Yazıcı düğmesini devre dışı bırakır.

  • PSD_NOWARNING Varsayılan yazıcı olmadığında uyarı iletisinin görüntülenmesini engeller.

  • PSD_DISABLEORIENTATION Sayfa yönlendirme iletişim kutusu denetimini devre dışı bırakır.

  • PSD_RETURNDEFAULT Bir iletişim kutusu görüntülemeden sistem varsayılan yazıcısı için başlatılan DEVMODE ve DEVNAMES yapılarını döndürmeye neden olurCPageSetupDialog. hem hem hDevMode de hDevNames NULL olduğu varsayılır; aksi takdirde işlev bir hata döndürür. Sistem varsayılan yazıcısı eski bir yazıcı sürücüsü (Windows sürüm 3.0'dan önceki) tarafından destekleniyorsa, yalnızca hDevNames null değeri döndürülür. hDevMode

  • PSD_DISABLEPAPER Kağıt seçimi denetimini devre dışı bırakır.

  • PSD_SHOWHELP İletişim kutusunun Yardım düğmesini göstermesine neden olur. Bu hwndOwner bayrak belirtilirse üye NULL olmamalıdır.

  • PSD_ENABLEPAGESETUPHOOK içinde lpfnSetupHookbelirtilen kanca işlevini etkinleştirir.

  • PSD_ENABLEPAGESETUPTEMPLATE ve tarafından hInstancelpSetupTemplateNametanımlanan iletişim kutusu şablon kutusunu kullanarak işletim sisteminin iletişim kutusunu oluşturmasına neden olur.

  • PSD_ENABLEPAGESETUPTEMPLATEHANDLE Önceden yüklenmiş bir iletişim kutusu şablonu içeren bir veri bloğunun tanımlandığını hInstance gösterir. Bu bayrak belirtilirse sistem yoksayar lpSetupTemplateName .

  • PSD_ENABLEPAGEPAINTHOOK içinde lpfnPagePaintHookbelirtilen kanca işlevini etkinleştirir.

  • PSD_DISABLEPAGEPAINTING İletişim kutusunun çizim alanını devre dışı bırakır.

pParentWnd
İletişim kutusunun üst veya sahip işaretçisi.

Açıklamalar

İletişim kutusunu görüntülemek için DoModal işlevini kullanın.

Örnek

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 ve DEVNAMES yapılarından bir yazıcı cihazı bağlamı oluşturur.

HDC CreatePrinterDC();

İade Değeri

Yeni oluşturulan yazıcı cihazı bağlamı (DC) için tanıtıcı.

CPageSetupDialog::D oModal

Windows ortak OLE Sayfa Yapısı iletişim kutusunu görüntülemek ve kullanıcının yazdırma kenar boşlukları, kağıdın boyutu ve yönü ve hedef yazıcı gibi çeşitli yazdırma kurulumu seçeneklerini seçmesine izin vermek için bu işlevi çağırın.

virtual INT_PTR DoModal();

İade Değeri

IDOK veya IDCANCEL. IDCANCEL döndürülürse, bir hata oluşup oluşmadığını belirlemek için Windows CommDlgExtendedError işlevini çağırın.

IDOK ve IDCANCEL, kullanıcının Tamam mı yoksa İptal düğmesini mi seçtiğini gösteren sabitlerdir.

Açıklamalar

Buna ek olarak, kullanıcı ağ konumu ve seçili yazıcıya özgü özellikler gibi yazıcı kurulum seçeneklerine erişebilir.

Yapının üyelerini m_psd ayarlayarak çeşitli Sayfa Yapısı iletişim kutusu seçeneklerini başlatmak istiyorsanız, çağrısından DoModalönce ve iletişim kutusu nesnesi oluşturulduğunda bunu yapmalısınız. çağrısı DoModalyaptıktan sonra, kullanıcı tarafından iletişim kutusuna ayarları veya bilgi girişini almak için diğer üye işlevlerini çağırın.

Kullanıcı tarafından girilen geçerli ayarları yaymak istiyorsanız CWinApp::SelectPrinter çağrısı yapın. Bu işlev, nesneden CPageSetupDialog bilgileri alır ve doğru özniteliklere sahip yeni bir yazıcı DC'sini başlatır ve seçer.

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

Örnek

CPageSetupDialog::CPageSetupDialog örneğine bakın.

CPageSetupDialog::GetDeviceName

Seçili durumdaki yazıcının adını almak için bu işlevi sonra DoModal çağırın.

CString GetDeviceName() const;

İade Değeri

Nesne tarafından CPageSetupDialog kullanılan cihaz adı.

CPageSetupDialog::GetDevMode

Nesnenin yazıcı cihazı bağlamı hakkında bilgi almak için çağrısından DoModal sonra bu işlevi çağırın CPageSetupDialog .

LPDEVMODE GetDevMode() const;

İade Değeri

Cihaz başlatma ve yazdırma sürücüsünün ortamı hakkında bilgi içeren DEVMODE veri yapısı. Windows SDK'sında açıklanan Windows GlobalUnlock işleviyle bu yapı tarafından alınan belleğin kilidini açmanız gerekir.

CPageSetupDialog::GetDriverName

Sistem tanımlı yazıcı aygıt sürücüsünün adını almak için DoModal'ı çağırdıktan sonra bu işlevi çağırın.

CString GetDriverName() const;

İade Değeri

CString Sistem tanımlı sürücü adını belirten bir.

Açıklamalar

CDC::CreateDC çağrısında değeri lpszDriverName olarak tarafından GetDriverName döndürülen nesneye bir işaretçi CString kullanın.

CPageSetupDialog::GetMargins

Yazıcı cihaz sürücüsünün kenar boşluklarını almak için DoModal çağrısından sonra bu işlevi çağırın.

void GetMargins(
    LPRECT lpRectMargins,
    LPRECT lpRectMinMargins) const;

Parametreler

lpRectMargins
Seçili durumdaki yazıcının yazdırma kenar boşluklarını açıklayan ( 1/1000 inç veya 1/100 mm) bir RECT yapısının veya CRect nesnesinin işaretçisi. Bu dikdörtgenle ilgilenmiyorsanız, bu parametre için NULL değerini geçirin.

lpRectMinMargins
Seçili durumdaki yazıcı için en düşük yazdırma kenar boşluklarını (1/1000 inç veya 1/100 mm cinsinden) açıklayan bir RECT yapı veya CRect nesne işaretçisi. Bu dikdörtgenle ilgilenmiyorsanız, bu parametre için NULL değerini geçirin.

CPageSetupDialog::GetPaperSize

Yazdırma için seçilen kağıdın boyutunu almak için bu işlevi çağırın.

CSize GetPaperSize() const;

İade Değeri

Yazdırma için seçilen kağıdın boyutunu (1/1000 inç veya 1/100 mm cinsinden) içeren bir CSize nesnesi.

CPageSetupDialog::GetPortName

Şu anda seçili olan yazıcı bağlantı noktasının adını almak için çağrısından DoModal sonra bu işlevi çağırın.

CString GetPortName() const;

İade Değeri

Seçili durumdaki yazıcı bağlantı noktasının adı.

CPageSetupDialog::m_psd

Üyeleri iletişim kutusu nesnesinin özelliklerini depolayan PAGESETUPDLG türünde bir yapı.

PAGESETUPDLG m_psd;

Açıklamalar

Nesneyi CPageSetupDialog oluşturdıktan sonra, üye işlevini çağırmadan DoModal önce iletişim kutusunun çeşitli yönlerini ayarlamak için kullanabilirsinizm_psd.

Veri üyesini m_psd doğrudan değiştirirseniz, tüm varsayılan davranışları geçersiz kılarsınız.

PAGESETUPDLG yapısı hakkında daha fazla bilgi için bkz. Windows SDK'sı.

CPageSetupDialog::CPageSetupDialog örneğine bakın.

CPageSetupDialog::OnDrawPage

Yazdırılan bir sayfanın ekran görüntüsünü çizmek için çerçeve tarafından çağrılır.

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

Parametreler

Pdc
Yazıcı cihazı bağlamı işaretçisi.

nMessage
Çizilmekte olan sayfanın alanını belirten bir ileti belirtir. Aşağıdakilerden biri olabilir:

  • sayfa alanının tamamını WM_PSD_FULLPAGERECT.

  • Geçerli minimum kenar boşluklarını WM_PSD_MINMARGINRECT.

  • Geçerli kenar boşluklarını WM_PSD_MARGINRECT.

  • Sayfanın İçeriğini WM_PSD_GREEKTEXTRECT.

  • WM_PSD_ENVSTAMPRECT Alanı bir posta pulu gösterimi için ayrılmıştır.

  • dönüş adresi gösterimi için WM_PSD_YAFULLPAGERECT Alanı. Bu alan, örnek sayfa alanının kenarlarına kadar uzanır.

Lprect
Çizim alanının koordinatlarını içeren bir CRect veya RECT nesnesinin işaretçisi.

İade Değeri

İşlenmişse sıfır olmayan değer; aksi takdirde 0.

Açıklamalar

Bu resim daha sonra ortak OLE Sayfa Yapısı iletişim kutusunun bir parçası olarak görüntülenir. Varsayılan uygulama, bir metin sayfasının görüntüsünü çizer.

Görüntünün belirli bir alanının veya görüntünün tamamının çizimini özelleştirmek için bu işlevi geçersiz kılın. NMessage değerini denetleyen deyimleri olan case bir switch deyimi kullanarak bunu yapabilirsiniz. Örneğin, sayfa görüntüsünün içeriğinin işlenmesini özelleştirmek için aşağıdaki örnek kodu kullanabilirsiniz:

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

NMessage'ın her durumunu işlemeniz gerekmediğini unutmayın. Görüntünün bir bileşenini, görüntünün birkaç bileşenini veya alanın tamamını işlemeyi seçebilirsiniz.

CPageSetupDialog::P reDrawPage

Yazdırılan sayfanın ekran görüntüsünü çizmeden önce çerçeve tarafından çağrılır.

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

Parametreler

wPaper
Kağıt boyutunu gösteren bir değer belirtir. Bu değer, DEVMODE yapısının açıklamasında listelenen DMPAPER_ değerlerden biri olabilir.

wFlags
Kağıdın veya zarfın yönünü ve yazıcının noktalı matris veya HPPCL (Hewlett Packard Yazıcı Denetim Dili) cihazı olup olmadığını gösterir. Bu parametre aşağıdaki değerlerden birine sahip olabilir:

  • 0x001 Yatay modda kağıt (nokta matris)

  • 0x003 Kağıdı yatay modda (HPPCL)

  • 0x005 Dikey modda kağıt (nokta matris)

  • 0x007 Dikey modda kağıt (HPPCL)

  • Zarfı yatay modda (HPPCL) 0x00b

  • Zarfı dikey modda 0x00d (nokta matris)

  • Zarfı yatay modda 0x019 (nokta matris)

  • Zarfı dikey modda 0x01f (nokta matris)

pPSD
Bir PAGESETUPDLG yapı işaretçisi. PAGESETUPDLG hakkında daha fazla bilgi için bkz. Windows SDK'sı.

İade Değeri

İşlenmişse sıfır olmayan değer; aksi takdirde 0.

Açıklamalar

Resmin çizimini özelleştirmek için bu işlevi geçersiz kılın. Bu işlevi geçersiz kılar ve TRUE döndürürseniz, görüntünün tamamını çizmeniz gerekir. Bu işlevi geçersiz kılar ve FALSE döndürürseniz, varsayılan görüntünün tamamı çerçeve tarafından çizilir.

Ayrıca bkz.

MFC Örnek WORDPAD
CCommonDialog Sınıfı
Hiyerarşi Grafiği