Met behulp van het eigenschappenvenster afdrukken

[Dit is voorlopige documentatie en onderhevig aan veranderingen.]

Dit onderwerp wordt beschreven voorbeeldcode waarmee een eigenschappenvenster afdrukken wordt weergegeven zodat een gebruiker opties voor het afdrukken van een document kan selecteren. De voorbeeldcode eerst toewijst en initialiseert een PRINTDLGEX structuur, dan roept de functie PrintDlgEx om het eigenschappenvenster weer te geven.

De voorbeeldcode stelt u de vlag PD_RETURNDC in de vlaggen lid van de PRINTDLG structuur. Dit zorgt ervoor dat de PrintDlgEx -functie voor het retourneren van een apparaat context-handle voor de geselecteerde printer in de hDC -lid. U kunt de greep gebruiken in functies zoals DrawText waarmee uitvoer naar de printer verzonden.

De voorbeeldcode wordt op input, de hDevMode en hDevNames leden ingesteld op NULL. Als de functie S_OK geeft, deze leden terug ingangen naar DEVMODE en DEVNAMES structuren met de inbreng van de gebruiker en informatie over de printer. U kunt deze informatie gebruiken om te bereiden de uitvoer worden verzonden naar de geselecteerde printer.

Nadat het afdrukken bewerking is voltooid, de voorbeeldcode bevrijdt de DEVMODE en DEVNAMES buffers en wenst dat de DeleteDC functie voor het verwijderen van de device-context.

HRESULT DisplayPrintPropertySheet)
    HWND hWnd / / venster dat eigenaar is van het eigenschappenvenster
)
{
HRESULT hResult;
LPPRINTDLGEX pPDX = NULL;
LPPRINTPAGERANGE pPageRanges = NULL;

/ / De PRINTDLGEX structuur toewijzen.

pPDX = GlobalAlloc (LPPRINTDLGEX) (GPTR, sizeof(PRINTDLGEX));
Als (! pPDX)
    Return E_OUTOFMEMORY;

/ / Een array van structuren PRINTPAGERANGE toewijzen.

pPageRanges = GlobalAlloc (LPPRINTPAGERANGE) (GPTR, 10 * sizeof(PRINTPAGERANGE));
Als (! pPageRanges)
    Return E_OUTOFMEMORY;

/ / De PRINTDLGEX structuur initialiseren.

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;

/ / Het eigenschappenvenster Print aanroepen.

hResult = PrintDlgEx(pPDX);

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

/ / De gebruiker knop Print, dus
    / / gebruik van de DC en andere informatie geretourneerd de / / PRINTDLGEX structuur het document af te drukken

}

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

resulteren in hResult;
} 

Index