Verwenden das Eigenschaftenblatt drucken

[Dies ist vorläufige Dokumentation und Änderungenvorbehalten.]

Dieses Thema beschreibt Beispielcode, die ein Eigenschaftenblatt Drucken zeigt, so dass ein Benutzer Optionen zum Drucken eines Dokuments auswählen kann. Der Beispielcode zuerst reserviert und Initialisiert eine PRINTDLGEX Struktur, dann ruft die PrintDlgEx -Funktion, um das Eigenschaftenblatt anzuzeigen.

Der Beispielcode legt das PD_RETURNDC-Flag in den Flags die PRINTDLG -Struktur. Dadurch wird die PrintDlgEx -Funktion einen Handle für einen Gerätekontext für den ausgewählten Drucker in den hDC zurück. Können Sie das Handle in Funktionen wie z. B. DrawText , die Ausgabe an den Drucker gesendet zu rendern.

Bei der Eingabe legt der Beispielcode die hDevMode und hDevNames Mitglieder auf NULL fest. Wenn die Funktion S_OK zurückgibt, diese Member zurück Handles zu DEVMODE und DEVNAMES -Strukturen, die die Benutzereingaben enthalten und Informationen über den Drucker. Sie können diese Informationen verwenden, bereiten Sie die Ausgabe an den ausgewählten Drucker gesendet werden.

Nachdem der Druckvorgang abgeschlossen ist, befreit der Beispielcode die DEVMODE und DEVNAMES -Puffer und ruft die DeleteDC Funktion den Gerätekontext löschen.

HRESULT DisplayPrintPropertySheet)
    HWND hWnd / / Fenster, besitzt das Eigenschaftenblatt
)
{
HRESULT hResult;
LPPRINTDLGEX pPDX = NULL;
LPPRINTPAGERANGE pPageRanges = NULL;

/ / Allocate die PRINTDLGEX-Struktur.

pPDX = GlobalAlloc (LPPRINTDLGEX) (GPTR, sizeof(PRINTDLGEX));
Wenn (! pPDX)
    E_OUTOFMEMORY zurückgegeben;

/ / Reservieren Sie ein Array von PRINTPAGERANGE Strukturen.

pPageRanges = GlobalAlloc (LPPRINTPAGERANGE) (GPTR, 10 * sizeof(PRINTPAGERANGE));
Wenn (! pPageRanges)
    E_OUTOFMEMORY zurückgegeben;

/ / Initialisieren Sie die PRINTDLGEX-Struktur.

pPDX-Gt; lStructSize = sizeof(PRINTDLGEX);
pPDX - > HwndOwner = hWnd;
pPDX - > hDevMode = NULL;
pPDX - > hDevNames = NULL;
pPDX - > hDC = NULL;
pPDX - > Flags = 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;

/ / Invoke im Print-Eigenschaftsfenster.

hResult = PrintDlgEx(pPDX);

Wenn ((hResult == S_OK) & &
           pPDX - > DwResultAction == PD_RESULT_PRINT) {}

/ / Benutzer geklickt die Schaltfläche "Drucken", also
    / / Verwendung der DC und andere Informationen zurückgegeben, der / / PRINTDLGEX-Struktur, um das Dokument zu drucken

}

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

hResult zurückgeben;
} 

Index