Delen via


Dialoogvenster Afdrukken

Met het dialoogvenster Afdrukken kan de gebruiker opties voor een bepaalde afdruktaak selecteren. De gebruiker kan bijvoorbeeld de printer opgeven die moet worden gebruikt, het aantal pagina's dat moet worden afgedrukt en het aantal exemplaren.

U kunt de functie PrintDlgEx gebruiken om een afdrukeigenschappenvenster weer te geven, met een pagina Algemeen met besturingselementen die vergelijkbaar zijn met het dialoogvenster Afdrukken. Het eigenschappenvenster kan na de pagina Algemeen ook aanvullende toepassingsspecifieke en stuurprogrammaspecifieke eigenschappenpagina's bevatten.

U maakt een Afdrukken dialoogvenster en geeft het weer door een PRINTDLG-structuur te initialiseren en deze structuur door te geven aan de PrintDlg-functie.

In de volgende afbeelding ziet u een typisch dialoogvenster voor Afdrukken.

dialoogvenster Afdrukken

Als de gebruiker op de knop OK klikt, retourneert PrintDlgTRUE en wordt de PRINTDLG- structuur gebruikt om informatie over de selecties van de gebruiker te retourneren. De hDevMode en hDevNames leden retourneren doorgaans globale geheugeningangen voor en DEVNAMES- structuren. U kunt de informatie in deze structuren gebruiken om een apparaatcontext of informatiecontext voor de geselecteerde printer te maken.

Als de gebruiker het dialoogvenster afdrukken annuleert of er een fout optreedt, retourneert PrintDlgONWAAR. U kunt de oorzaak van een fout bepalen met behulp van de functie CommDlgExtendedError om de uitgebreide foutwaarde op te halen.

Het dialoogvenster Afdrukken bevat een groep keuzerondjes Afdrukbereik om aan te geven of de gebruiker alle pagina's, een reeks pagina's, of alleen de geselecteerde tekst wil afdrukken. Voordat u PrintDlg-aanroept, kunt u een van de PD_ALLPAGES, PD_SELECTIONof PD_PAGENUMS vlaggen instellen om aan te geven welke knop in eerste instantie is geselecteerd. Wanneer PrintDlgTRUEretourneert, wordt met de functie een van deze vlaggen ingesteld om de selecties van de gebruiker aan te geven. Als PD_PAGENUMS is ingesteld, bevatten de nFromPage en nToPage leden van de PRINTDLG- structuur de begin- en eindpagina's die door de gebruiker zijn opgegeven. Om het selectievakje Pagina's en de bijbehorende bewerkingsbesturingselementen Van en Tot uit te schakelen, stelt u de vlag PD_NOPAGENUMS in. Om de radioknop Selectie uit te schakelen, stelt u de optie PD_NOSELECTION in.

Het dialoogvenster bevat een besturingselement voor bewerken waarin de gebruiker het aantal exemplaren kan typen dat moet worden afgedrukt. Als het hDevMode-lid van de PRINTDLG--structuur niet-NULL-is, specificeert het dmCopies-lid van de structuur de beginwaarde voor dit bewerkingselement. Als hDevMode is NULL-, geeft de nCopies lid van de PRINTDLG- structuur de oorspronkelijke waarde op. Wanneer PrintDlg retourneert, geeft nCopies meestal het aantal exemplaren aan dat door de gebruiker is opgegeven. Als u echter de vlag PD_USEDEVMODECOPIESANDCOLLATE instelt wanneer u het dialoogvenster maakt, wordt nCopies- altijd ingesteld op 1 bij retour en geeft het dmCopies lid van DEVMODE- het aantal exemplaren aan dat moet worden afgedrukt.

Het selectievakje sorteren geeft aan of de gebruiker de pagina's wil sorteren als er meerdere exemplaren worden afgedrukt. De vlag PD_COLLATE is ingesteld als het selectievakje sorteren is ingeschakeld. Als uw toepassing geen ondersteuning biedt voor meerdere kopieën of gesimuleerde sortering, stelt u de vlag PD_USEDEVMODECOPIESANDCOLLATE in het Vlaggen element van de PRINTDLG- structuur in. Met deze optie schakelt u het selectievakje Sorteren en het invoerveld Aantal kopieën uit, tenzij het printerstuurprogramma het maken van meerdere kopieën en sorteren ondersteunt.

Het selectievakje Afdrukken naar bestand geeft aan of de gebruiker uitvoer naar een bestand wil verzenden in plaats van naar een printer. U kunt de vlag PD_PRINTTOFILE instellen, zodat het selectievakje in eerste instantie is ingeschakeld. Als u het selectievakje wilt verbergen, stelt u de vlag PD_HIDEPRINTTOFILE in. Als u dit wilt uitschakelen, stelt u de vlag PD_DISABLEPRINTTOFILE in. Als de gebruiker de optie Afdrukken naar bestand selecteert, stelt PrintDlg de vlag PD_PRINTTOFILE in en retourneert 'FILE:' op de door de wOutputOffset lid van de DEVNAMES structuur aangegeven offset. Wanneer u de functie aanroept om de afdrukbewerking te starten, geeft u deze tekenreeks 'FILE:' op in het lpszOutput lid van de structuur. Door deze tekenreeks op te geven, vraagt het afdruksubsysteem de gebruiker om de naam van het uitvoerbestand.

Standaard wordt in het dialoogvenster Afdrukken in eerste instantie informatie over de huidige standaardprinter weergegeven. Als u informatie wilt weergeven voor een andere geïnstalleerde printer, initialiseert u een en DEVNAMES- structuur en wijst u de globale geheugengreep toe aan de structuur aan de hDevMode en hDevNames-leden. De apparaatnaam die u opgeeft in de dmDeviceName lid van de DEVMODE structuur en in de wDriverOffset lid van de DEVNAMES structuur moet een printerapparaat identificeren dat ook wordt vermeld in de sectie [Apparaten] van het Win.ini-bestand. Als het apparaat niet wordt weergegeven, retourneert PrintDlg een fout.

U kunt PrintDlg instrueren om een apparaatcontext of informatiecontext voor de printer te maken door de vlag PD_RETURNDC of PD_RETURNIC in te stellen in het vlaggen onderdeel van de PRINTDLG structuur. De functie retourneert een handle naar de apparaatcontext of informatiecontext in het hDC- lid. Als u de vlag PD_RETURNDC gebruikt, kunt u de apparaatcontext gebruiken om uitvoer voor de printer te genereren.

Als u informatie over de standaardprinter wilt ophalen zonder het dialoogvenster Afdrukken weer te geven, stelt u de vlag PD_RETURNDEFAULT in. In dit geval retourneert PrintDlg onmiddellijk nadat de hDevMode en hDevNames leden zijn ingesteld op handles voor structuren die de informatie bevatten.

Standaard worden PrintDlg- berichtvakken weergegeven wanneer er fouten optreden. De functie geeft bijvoorbeeld een foutbericht weer als er geen printers zijn geïnstalleerd. Als u wilt voorkomen dat de functie deze waarschuwingsberichten weergeeft, stelt u de vlag PD_NOWARNING in.

De volgende onderwerpen worden in deze sectie besproken.

Het aanpassen van het dialoogvenster Afdrukken

U kunt een aangepaste sjabloon opgeven voor het dialoogvenster Afdrukken, bijvoorbeeld als u extra besturingselementen wilt opnemen die uniek zijn voor uw toepassing. De functie PrintDlg gebruikt uw aangepaste sjabloon in plaats van de standaardsjabloon.

Om een aangepaste sjabloon op te geven voor het dialoogvenster Afdrukken:

  1. Maak de aangepaste sjabloon door de standaardsjabloon te wijzigen die is opgegeven in het bestand Prnsetup.dlg. De besturings-ID's die worden gebruikt in de standaarddialoogsjabloon Afdrukken worden gedefinieerd in het bestand Dlgs.h.
  2. Gebruik de PRINTDLG structuur om de sjabloon als volgt in te schakelen:
    • Als uw aangepaste sjabloon een resource is in een toepassing of bibliotheek met dynamische koppelingen, stelt u de vlag PD_ENABLEPRINTTEMPLATE in het Flags lid in. Gebruik de hInstance- en lpPrintTemplateName- elementen van de structuur om de module en resourcenaam te identificeren.

      -Of-

    • Als uw aangepaste sjabloon al in het geheugen staat, stelt u de vlag PD_ENABLEPRINTTEMPLATEHANDLE in. Gebruik het hPrintTemplate-element om het geheugenobject te identificeren dat de sjabloon bevat.

U kunt een PrintHookProc haakprocedure opgeven voor het dialoogvenster Afdrukken. De hookprocedure kan berichten verwerken die naar het dialoogvenster worden verzonden. Het kan ook berichten verzenden naar het dialoogvenster. Als u een aangepaste sjabloon gebruikt om aanvullende besturingselementen te definiëren, moet u een hookprocedure opgeven om invoer voor uw besturingselementen te verwerken.

Om een haakprocedure voor het dialoogvenster Afdrukken in te schakelen:

  1. Stel de vlag PD_ENABLEPRINTHOOK in de Vlaggen in lid van de PRINTDLG- structuur.
  2. Geef het adres van de hookprocedure op in het lpfnPrintHook lid.

Nadat het WM_INITDIALOG bericht is verwerkt, verzendt de procedure van het dialoogvenster een WM_INITDIALOG bericht naar de hookprocedure. De parameter lParam van dit bericht is een aanwijzer naar de PRINTDLG- structuur die wordt gebruikt om het dialoogvenster te initialiseren.

U kunt een dialoogvenster voor Afdrukinstelling aanmaken en weergeven door de PD_PRINTSETUP vlag te gebruiken bij een aanroep naar de functie PrintDlg. Het dialoogvenster Afdrukinstellingen is echter vervangen door het dialoogvenster Pagina-instelling en mag niet worden gebruikt in nieuwe toepassingen.

De volgende markeringen zijn alleen van toepassing op het dialoogvenster Afdrukken instellen:

  • PD_ENABLESETUPHOOK
  • PD_ENABLESETUPTEMPLATE
  • PD_ENABLESETUPTEMPLATEHANDLE