Sourcecodes - Seitenvorschub des Druckers starten

Sprachenübersicht/C / C++/ C#/Sonstiges

Seitenvorschub des Druckers starten

Diese Seite wurde 1491 mal aufgerufen.

Diese Artikel wurde als uneditierbar gepostet, und darf, wenn nicht ausdrücklich erlaubt nicht auf anderen Seiten verbreitet, oder editiert werden! Printversion

Keywords: Tutorial, Quellcode, C++ Sourcecode

Herzlichen Dank an Anton Staruschkin von www.cpp-programming.de/, für die Erlaubnis seine Quellcodes zu veröffentlichen.

Dieses Programm veranlasst den Drucker eine leere Seite auszugeben. Wichtig: Es muss eine Windows-Anwendung erstellt und die Library "winspool.lib" mitgelinkt werden.

Code:


#include <windows.h>

HDC GetPrinterDC (void) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPSTR lpszCmdLine, int iCmdShow)
{
     static DOCINFO di = { sizeof (DOCINFO), TEXT ("FormFeed") } ;
     HDC            hdcPrint = GetPrinterDC () ;

     if (hdcPrint != NULL)
     {
          if (StartDoc (hdcPrint, &di) > 0)
               if (StartPage (hdcPrint) > 0 && EndPage (hdcPrint) > 0)
                    EndDoc (hdcPrint) ;
               
          DeleteDC (hdcPrint) ;
     }
     
     return 0 ;
}

HDC GetPrinterDC (void)
{
     DWORD            dwNeeded, dwReturned ;
     HDC              hdc ;
     PRINTER_INFO_4 * pinfo4 ;
     PRINTER_INFO_5 * pinfo5 ; 

     if (GetVersion () & 0x80000000)         // Windows 98
     {
          EnumPrinters (PRINTER_ENUM_DEFAULT, NULL, 5, NULL,
                        0, &dwNeeded, &dwReturned) ;

          pinfo5 = (PRINTER_INFO_5 *)malloc (dwNeeded) ;

          EnumPrinters (PRINTER_ENUM_DEFAULT, NULL, 5, (PBYTE) pinfo5,
                        dwNeeded, &dwNeeded, &dwReturned) ;

          hdc = CreateDC (NULL, pinfo5->pPrinterName, NULL, NULL) ;

          free (pinfo5) ;
     }
     else                                    // Windows NT
     {
          EnumPrinters (PRINTER_ENUM_LOCAL, NULL, 4, NULL,
                        0, &dwNeeded, &dwReturned) ;

          pinfo4 = (PRINTER_INFO_4 *)malloc (dwNeeded) ;

          EnumPrinters (PRINTER_ENUM_LOCAL, NULL, 4, (PBYTE) pinfo4,
                        dwNeeded, &dwNeeded, &dwReturned) ;

          hdc = CreateDC (NULL, pinfo4->pPrinterName, NULL, NULL) ;

          free (pinfo4) ;
     }
     return hdc ;   
}

Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?

Sprachenübersicht/C / C++/ C#/Sonstiges/Seitenvorschub des Druckers starten