Classe CPageSetupDialog

Incapsula i servizi forniti dalla finestra di dialogo di impostazione pagina OLE comune di Windows con supporto aggiuntivo per l'impostazione e la modifica dei margini di stampa.

Sintassi

class CPageSetupDialog : public CCommonDialog

Membri

Costruttori pubblici

Nome Descrizione
CPageSetupDialog::CPageSetupDialog Costruisce un oggetto CPageSetupDialog.

Metodi pubblici

Nome Descrizione
CPageSetupDialog::CreatePrinterDC Crea un contesto di dispositivo per la stampa.
CPageSetupDialog::D oModal Visualizza la finestra di dialogo e consente all'utente di effettuare una selezione.
CPageSetupDialog::GetDeviceName Restituisce il nome del dispositivo della stampante.
CPageSetupDialog::GetDevMode Restituisce l'oggetto DEVMODE corrente della stampante.
CPageSetupDialog::GetDriverName Restituisce il driver utilizzato dalla stampante.
CPageSetupDialog::GetMargins Restituisce le impostazioni del margine corrente della stampante.
CPageSetupDialog::GetPaperSize Restituisce il formato carta della stampante.
CPageSetupDialog::GetPortName Restituisce il nome della porta di output.
CPageSetupDialog::OnDrawPage Chiamato dal framework per eseguire il rendering di un'immagine dello schermo di una pagina stampata.
CPageSetupDialog::P reDrawPage Chiamato dal framework prima di eseguire il rendering di un'immagine dello schermo di una pagina stampata.

Membri dati pubblici

Nome Descrizione
CPageSetupDialog::m_psd Struttura utilizzata per personalizzare un CPageSetupDialog oggetto.

Osservazioni:

Questa classe è progettata per posizionare la finestra di dialogo Imposta stampa.

Per usare un CPageSetupDialog oggetto , creare prima di tutto l'oggetto usando il CPageSetupDialog costruttore . Dopo aver costruito la finestra di dialogo, è possibile impostare o modificare qualsiasi valore nel m_psd membro dati per inizializzare i valori dei controlli della finestra di dialogo. La struttura m_psd è di tipo PAGESETUPDLG.

Dopo aver inizializzato i controlli della finestra di dialogo, chiamare la DoModal funzione membro per visualizzare la finestra di dialogo e consentire all'utente di selezionare le opzioni di stampa. DoModal restituisce un valore che indica se l'utente ha selezionato il pulsante OK (IDOK) o Annulla (IDCANCEL).

Se DoModal restituisce IDOK, è possibile usare diverse CPageSetupDialogfunzioni membro o accedere al m_psd membro dati per recuperare l'input delle informazioni dall'utente.

Nota

Dopo aver ignorato la finestra di dialogo installazione pagina OLE comune, le modifiche apportate dall'utente non verranno salvate dal framework. Spetta all'applicazione stessa salvare i valori di questa finestra di dialogo in una posizione permanente, ad esempio membro del documento o della classe dell'applicazione.

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CPageSetupDialog

Requisiti

Intestazione: afxdlgs.h

CPageSetupDialog::CPageSetupDialog

Chiamare questa funzione per costruire un CPageSetupDialog oggetto .

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

Parametri

dwFlags
Uno o più flag che è possibile usare per personalizzare le impostazioni della finestra di dialogo. I valori possono essere combinati usando l'operatore OR bit per bit. I valori hanno il significato seguente:

  • PSD_DEFAULTMINMARGINS Imposta le larghezze minime consentite per i margini della pagina allo stesso modo dei minimi della stampante. Questo flag viene ignorato se vengono specificati anche i flag PSD_MARGINS e PSD_MINMARGINS.

  • PSD_INWININIINTLMEASURE Non implementato.

  • PSD_MINMARGINS Fa sì che il sistema usi i valori specificati nel rtMinMargin membro come larghezza minima consentita per i margini sinistro, superiore, destro e inferiore. Il sistema impedisce all'utente di immettere una larghezza minore del valore minimo specificato. Se PSD_MINMARGINS non viene specificato, il sistema imposta le larghezze minime consentite su quelle consentite dalla stampante.

  • PSD_MARGINS Attiva l'area di controllo del margine.

  • PSD_INTHOUSANDTHSOFINCHES fa sì che le unità della finestra di dialogo vengano misurate in 1/1000 di pollice.

  • PSD_INHUNDREDTHSOFMILLIMETERS Fa sì che le unità di misura della finestra di dialogo vengano misurate in 1/100 di millimetri.

  • PSD_DISABLEMARGINS Disabilita i controlli della finestra di dialogo del margine.

  • PSD_DISABLEPRINTER Disabilita il pulsante Stampante.

  • PSD_NOWARNING Impedisce la visualizzazione del messaggio di avviso quando non è presente alcuna stampante predefinita.

  • PSD_DISABLEORIENTATION Disabilita il controllo della finestra di dialogo di orientamento della pagina.

  • PSD_RETURNDEFAULT Causa la CPageSetupDialog restituzione di strutture DEVMODE e DEVNAMES inizializzate per la stampante predefinita del sistema senza visualizzare una finestra di dialogo. Si presuppone che sia hDevNames che hDevMode siano NULL; in caso contrario, la funzione restituisce un errore. Se la stampante predefinita del sistema è supportata da un driver della stampante precedente (precedente a Windows versione 3.0), viene restituito solo hDevNames ; hDevMode è NULL.

  • PSD_DISABLEPAPER Disabilita il controllo di selezione carta.

  • PSD_SHOWHELP fa sì che la finestra di dialogo visualizzi il pulsante ? Il hwndOwner membro non deve essere NULL se questo flag è specificato.

  • PSD_ENABLEPAGESETUPHOOK Abilita la funzione hook specificata in lpfnSetupHook.

  • PSD_ENABLEPAGESETUPTEMPLATE fa sì che il sistema operativo crei la finestra di dialogo usando la finestra di dialogo modello identificata da hInstance e lpSetupTemplateName.

  • PSD_ENABLEPAGESETUPTEMPLATEHANDLE Indica che hInstance identifica un blocco di dati contenente un modello di finestra di dialogo precaricata. Il sistema ignora lpSetupTemplateName se viene specificato questo flag.

  • PSD_ENABLEPAGEPAINTHOOK Abilita la funzione hook specificata in lpfnPagePaintHook.

  • PSD_DISABLEPAGEPAINTING Disabilita l'area di disegno della finestra di dialogo.

pParentWnd
Puntatore all'elemento padre o proprietario della finestra di dialogo.

Osservazioni:

Utilizzare la funzione DoModal per visualizzare la finestra di dialogo.

Esempio

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

Crea un contesto di dispositivo della stampante dalle strutture DEVMODE e DEVNAMES .

HDC CreatePrinterDC();

Valore restituito

Handle per il contesto del dispositivo della stampante appena creato.

CPageSetupDialog::D oModal

Chiamare questa funzione per visualizzare la finestra di dialogo Installazione pagina OLE comune di Windows e consentire all'utente di selezionare varie opzioni di configurazione della stampa, ad esempio i margini di stampa, le dimensioni e l'orientamento della carta e della stampante di destinazione.

virtual INT_PTR DoModal();

Valore restituito

IDOK o IDCANCEL. Se viene restituito IDCANCEL, chiamare la funzione Windows CommDlgExtendedError per determinare se si è verificato un errore.

IDOK e IDCANCEL sono costanti che indicano se l'utente ha selezionato il pulsante OK o Annulla.

Osservazioni:

Inoltre, l'utente può accedere alle opzioni di configurazione della stampante, ad esempio il percorso di rete e le proprietà specifiche della stampante selezionata.

Se si desidera inizializzare le varie opzioni della finestra di dialogo Imposta pagina impostando i membri della m_psd struttura, è necessario eseguire questa operazione prima di chiamare DoModale dopo la costruzione dell'oggetto finestra di dialogo. Dopo aver chiamato , chiamare DoModalaltre funzioni membro per recuperare le impostazioni o l'input di informazioni da parte dell'utente nella finestra di dialogo.

Se si desidera propagare le impostazioni correnti immesse dall'utente, effettuare una chiamata a CWinApp::SelectPrinter. Questa funzione accetta le informazioni dall'oggetto CPageSetupDialog e inizializza e seleziona un nuovo controller di dominio della stampante con gli attributi appropriati.

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

Esempio

Vedere l'esempio per CPageSetupDialog::CPageSetupDialog.

CPageSetupDialog::GetDeviceName

Chiamare questa funzione dopo DoModal per recuperare il nome della stampante attualmente selezionata.

CString GetDeviceName() const;

Valore restituito

Nome del dispositivo utilizzato dall'oggetto CPageSetupDialog .

CPageSetupDialog::GetDevMode

Chiamare questa funzione dopo aver chiamato DoModal per recuperare informazioni sul contesto del dispositivo della stampante dell'oggetto CPageSetupDialog .

LPDEVMODE GetDevMode() const;

Valore restituito

Struttura dei dati DEVMODE , che contiene informazioni sull'inizializzazione del dispositivo e sull'ambiente di un driver di stampa. È necessario sbloccare la memoria utilizzata da questa struttura con la funzione Windows GlobalUnlock , descritta in Windows SDK.

CPageSetupDialog::GetDriverName

Chiamare questa funzione dopo aver chiamato DoModal per recuperare il nome del driver di dispositivo della stampante definito dal sistema.

CString GetDriverName() const;

Valore restituito

Oggetto CString che specifica il nome del driver definito dal sistema.

Osservazioni:

Usare un puntatore all'oggetto CString restituito da GetDriverName come valore di lpszDriverName in una chiamata a CDC::CreateDC.

CPageSetupDialog::GetMargins

Chiamare questa funzione dopo una chiamata a DoModal per recuperare i margini del driver di dispositivo della stampante.

void GetMargins(
    LPRECT lpRectMargins,
    LPRECT lpRectMinMargins) const;

Parametri

lpRectMargins
Puntatore a una struttura RECT o a un oggetto CRect che descrive (in 1/1000 pollici o 1/100 mm) i margini di stampa per la stampante attualmente selezionata. Passare NULL per questo parametro, se non si è interessati a questo rettangolo.

lpRectMinMargins
Puntatore a una struttura o CRect a un RECT oggetto che descrive (in 1/1000 pollici o 1/100 mm) i margini di stampa minimi per la stampante attualmente selezionata. Passare NULL per questo parametro, se non si è interessati a questo rettangolo.

CPageSetupDialog::GetPaperSize

Chiamare questa funzione per recuperare le dimensioni della carta selezionata per la stampa.

CSize GetPaperSize() const;

Valore restituito

Oggetto CSize contenente le dimensioni della carta (in 1/1000 pollici o 1/100 mm) selezionato per la stampa.

CPageSetupDialog::GetPortName

Chiamare questa funzione dopo aver chiamato DoModal per recuperare il nome della porta della stampante attualmente selezionata.

CString GetPortName() const;

Valore restituito

Nome della porta della stampante attualmente selezionata.

CPageSetupDialog::m_psd

Struttura di tipo PAGESETUPDLG, i cui membri archiviano le caratteristiche dell'oggetto dialogo.

PAGESETUPDLG m_psd;

Osservazioni:

Dopo aver costruito un CPageSetupDialog oggetto, è possibile usare m_psd per impostare vari aspetti della finestra di dialogo prima di chiamare la DoModal funzione membro.

Se si modifica direttamente il m_psd membro dati, si eseguirà l'override di qualsiasi comportamento predefinito.

Per altre informazioni sulla struttura PAGESETUPDLG , vedere Windows SDK.

Vedere l'esempio per CPageSetupDialog::CPageSetupDialog.

CPageSetupDialog::OnDrawPage

Chiamato dal framework per disegnare un'immagine dello schermo di una pagina stampata.

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

Parametri

pDC
Puntatore al contesto del dispositivo della stampante.

nMessage
Specifica un messaggio che indica l'area della pagina attualmente disegnata. Può essere uno dei seguenti:

  • WM_PSD_FULLPAGERECT L'intera area della pagina.

  • WM_PSD_MINMARGINRECT Margini minimi correnti.

  • WM_PSD_MARGINRECT Margini correnti.

  • WM_PSD_GREEKTEXTRECT Contenuto della pagina.

  • WM_PSD_ENVSTAMPRECT Area riservata per una rappresentazione del timbro di posta.

  • WM_PSD_YAFULLPAGERECT Area per una rappresentazione dell'indirizzo restituito. Questa area si estende ai bordi dell'area della pagina di esempio.

lpRect
Puntatore a un oggetto CRect o RECT contenente le coordinate dell'area di disegno.

Valore restituito

Valore diverso da zero se gestito; in caso contrario, 0.

Osservazioni:

Questa immagine viene quindi visualizzata come parte della finestra di dialogo Comune installazione pagina OLE. L'implementazione predefinita disegna un'immagine di una pagina di testo.

Eseguire l'override di questa funzione per personalizzare il disegno di un'area specifica dell'immagine o dell'intera immagine. A tale scopo, è possibile usare un'istruzione switch con istruzioni che case controllano il valore di nMessage. Ad esempio, per personalizzare il rendering del contenuto dell'immagine della pagina, è possibile usare il codice di esempio seguente:

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

Si noti che non è necessario gestire ogni caso di nMessage. È possibile scegliere di gestire un componente dell'immagine, diversi componenti dell'immagine o l'intera area.

CPageSetupDialog::P reDrawPage

Chiamato dal framework prima di disegnare l'immagine dello schermo di una pagina stampata.

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

Parametri

wPaper
Specifica un valore che indica le dimensioni della carta. Questo valore può essere uno dei valori DMPAPER_ elencati nella descrizione della struttura DEVMODE .

wFlags
Indica l'orientamento della carta o della busta e se la stampante è un dispositivo con matrice di punti o HPPCL (Hetrix Packard Printer Control Language). Per il parametro è possibile specificare uno dei valori riportati di seguito:

  • 0x001 Carta in modalità orizzontale (matrice di punti)

  • 0x003 carta in modalità orizzontale (HPPCL)

  • 0x005 carta in modalità verticale (matrice di punti)

  • 0x007 carta in modalità verticale (HPPCL)

  • busta 0x00b in modalità orizzontale (HPPCL)

  • busta 0x00d in modalità verticale (matrice di punti)

  • busta 0x019 in modalità orizzontale (matrice di punti)

  • busta 0x01f in modalità verticale (matrice di punti)

pPSD
Puntatore a una struttura PAGESETUPDLG. Per altre informazioni su PAGESETUPDLG, vedere Windows SDK.

Valore restituito

Valore diverso da zero se gestito; in caso contrario, 0.

Osservazioni:

Eseguire l'override di questa funzione per personalizzare il disegno dell'immagine. Se si esegue l'override di questa funzione e si restituisce TRUE, è necessario disegnare l'intera immagine. Se si esegue l'override di questa funzione e si restituisce FALSE, l'intera immagine predefinita viene disegnata dal framework.

Vedi anche

WORDPAD di esempio MFC
Classe CCommonDialog
Grafico della gerarchia