Ved hjelp av egenskapsarket Skriv ut

[Dette er foreløpige dokumentasjonen og endring.]

Dette emnet beskriver eksempelkode som viser et egenskapsark for Skriv ut slik at en bruker kan velge alternativer for utskrift av et dokument. Eksempelkoden først tildeler og initialiserer en PRINTDLGEX struktur, og deretter kaller funksjonen PrintDlgEx å vise egenskapsarket.

Eksempelkoden angir flagget PD_RETURNDC i flaggene -medlem av PRINTDLG -strukturen. Dette fører til at PrintDlgEx -funksjonen til å returnere en enhet kontekstreferanse for den valgte skriveren i hDC -medlem. Du kan bruke håndtaket i funksjoner som DrawText som gjengir utdata som sendes til skriveren.

For inndata angir eksempelkoden hDevMode og hDevNames medlemmene til NULL. Hvis funksjonen returnerer S_OK, disse medlemmene returnere referanser til DEVMODE og DEVNAMES strukturer som inneholder er brukerinndataene og informasjon om skriveren. Du kan bruke denne informasjonen til å forberede en utdataene skal sendes til den valgte skriveren.

Etter at utskriften er fullført, eksempelkoden frigjør DEVMODE og DEVNAMES buffere og kaller den DeleteDC -funksjonen til å slette enheten sammenheng.

HRESULT DisplayPrintPropertySheet)
    HWND hWnd / / vinduet som eier egenskapsarket
)
{
HRESULT hResult;
LPPRINTDLGEX pPDX = NULL;
LPPRINTPAGERANGE pPageRanges = NULL;

/ / Tildele PRINTDLGEX strukturen.

pPDX = (LPPRINTDLGEX) GlobalAlloc (GPTR, sizeof(PRINTDLGEX));
Hvis (! pPDX)
    returnere E_OUTOFMEMORY;

/ / Tildele en matrise av PRINTPAGERANGE strukturer.

pPageRanges = GlobalAlloc (LPPRINTPAGERANGE) (GPTR, 10 * sizeof(PRINTPAGERANGE));
Hvis (! pPageRanges)
    returnere E_OUTOFMEMORY;

/ / Initialisere strukturen PRINTDLGEX.

pPDX-gt; lStructSize = sizeof(PRINTDLGEX);
pPDX - > hwndOwner = hWnd;
pPDX - > hDevMode = NULL;
pPDX - > hDevNames = NULL;
pPDX - > hDC = NULL;
pPDX - > flagg = PD_RETURNDC | PD_COLLATE;
pPDX - > Flags2 = 0;
pPDX - > ExclusionFlags = 0;
pPDX - > nPageRanges = 0;
pPDX - > nMaxPageRanges = 10;
pPDX - > lpPageRanges = pPageRanges;
pPDX - > nMinPage = 1;
pPDX - > nMaxPage = 1000;
pPDX - > nCopies = 1;
pPDX - > hInstance = 0;
pPDX - > lpPrintTemplateName = NULL;
pPDX - > lpCallback = NULL;
pPDX - > nPropertyPages = 0;
pPDX - > lphPropertyPages = NULL;
pPDX - > nStartPage = START_PAGE_GENERAL;
pPDX - > dwResultAction = 0;

/ / Anrop egenskapsarket Skriv ut.

hResult = PrintDlgEx(pPDX);

Hvis ((hResult == S_OK) & &
           pPDX - > dwResultAction == PD_RESULT_PRINT) {

/ / Brukeren klikket på knappen Skriv ut, så
    / / bruker Domenekontrolleren og annen informasjon som er returnert i den / / PRINTDLGEX struktur til å skrive ut dokumentet

}

Hvis (pPDX - > hDC! = NULL) DeleteDC (pPDX - > hDC);
Hvis (pPDX - > hDevMode! = NULL) GlobalFree (pPDX - > hDevMode); 
Hvis (pPDX - > hDevNames! = NULL) GlobalFree (pPDX - > hDevNames); 

returnere hResult;
} 

Index