Mehrere Seiten auf einen Drucker ausgeben



  • Hallo,

    ich möchte in meiner Anwendung mehrere Seiten ausgeben.
    Dazu habe ich ein Beispiel gefunden welches aber nur eine Zeile ausgibt.

    // Drucken_02.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    // Visual Studio 2015 C++
    // Beispiel von:
    // https://www.c-plusplus.net/forum/299274-full
    // https://www.c-plusplus.net/forum/143792-full (textdrucken())
    // UNICODE ausschalten (Projektmappen-Explorer-Eigenschaften)
    #include "stdafx.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <Windows.h>
    #include <iostream>
    #include <string>
    
    using namespace std;
    using std::string;
    
    #pragma comment(lib, "Winspool.lib")
    int textdrucken();
    
    int main()
    {
    	textdrucken();
    
    	cout << "Programm Ende";
    	cin.get();
    	return 0;
    }
    
    int textdrucken()
    {
    	// Standard-Drucker ermitteln --> szPrinter
    	char szPrinter[MAX_PATH] = { '\0' };
    	DWORD zeichen = MAX_PATH;
    	GetDefaultPrinter(szPrinter, &zeichen);
    	cout << "Drucker-Name " << szPrinter << endl;
    
            HDC drucker = CreateDC(NULL, szPrinter, NULL, NULL);
    	DOCINFO dokument_info;
    
    	memset(&dokument_info, 0, sizeof(DOCINFO));
    	dokument_info.cbSize = sizeof(DOCINFO);
    	dokument_info.lpszDocName = "testdruck";
    
    	char *String = "Testdruck Juergen";
    
    	// drucken
    	StartDoc(drucker, &dokument_info);
    	StartPage(drucker);
            int x = 0, y = 0;
    	// Inhalt ausgeben
    	TextOut(drucker, x, y, String, strlen(String));
    	EndPage(drucker); // Neue Seite
    	EndDoc(drucker);  // Dokument wird geschlossen
    
    	DeleteDC(drucker);
    
    	return 0;
    }
    

    Wie muss ich meinen Code erweitern um mehrere Zeilen bzw. Seiten ausgeben zu können ?

    MfG

    Juergen B.
    😕



  • Das sollte doch anhand der Namen StartPage, TextOut und EndPage ersichtlich sein - packe diese in entsprechende Schleifen.



  • Hallo,

    mit diesem Code kann ich schon mehrere Zeilen drucken:

    // Drucken_02.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    // Visual Studio 2015 C++
    // Beispiel von:
    // https://www.c-plusplus.net/forum/299274-full
    // https://www.c-plusplus.net/forum/143792-full (textdrucken())
    // UNICODE ausschalten (Projektmappen-Explorer-Eigenschaften)
    #include "stdafx.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <Windows.h>
    #include <iostream>
    #include <string>
    
    using namespace std;
    using std::string;
    
    #pragma comment(lib, "Winspool.lib")
    int textdrucken();
    
    int main()
    {
        textdrucken();
    
        cout << "Programm Ende";
        cin.get();
        return 0;
    }
    
    int textdrucken()
    {
        // Standard-Drucker ermitteln --> szPrinter
        char szPrinter[MAX_PATH] = { '\0' };
        DWORD zeichen = MAX_PATH;
        GetDefaultPrinter(szPrinter, &zeichen);
        cout << "Drucker-Name " << szPrinter << endl;
    
            HDC drucker = CreateDC(NULL, szPrinter, NULL, NULL);
        DOCINFO dokument_info;
    
        memset(&dokument_info, 0, sizeof(DOCINFO));
        dokument_info.cbSize = sizeof(DOCINFO);
        dokument_info.lpszDocName = "testdruck";
    
        char *String = "Testdruck Juergen";
    
        // drucken
        StartDoc(drucker, &dokument_info);
        StartPage(drucker);
        int i = 0, x = 50, y = 200;
        // Inhalt ausgeben
        for (i = 1; i < 4; i++)
        {
            TextOut(drucker, x, i*y, String, strlen(String));
        }
        EndPage(drucker); // Neue Seite
        EndDoc(drucker);  // Dokument wird geschlossen
    
        DeleteDC(drucker);
    
        return 0;
    }
    

    MfG

    Juergen B.


Anmelden zum Antworten