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 CPageSetupDialog
funzioni 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à
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 siahDevNames
chehDevMode
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 solohDevNames
;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
elpSetupTemplateName
.PSD_ENABLEPAGESETUPTEMPLATEHANDLE Indica che
hInstance
identifica un blocco di dati contenente un modello di finestra di dialogo precaricata. Il sistema ignoralpSetupTemplateName
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 DoModal
e dopo la costruzione dell'oggetto finestra di dialogo. Dopo aver chiamato , chiamare DoModal
altre 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