Druckerproblem....



  • Okay hi leute!

    Multiline und alles andere was nötig ist, habe ich an meinem Editfeld eingestellt.
    Mit folgender Funktion lasse ich den Inhalt drucken:

    void CDlgPrintDlg::OnOK()
    {
    CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this);
    
    if (dlgPrint.DoModal()==IDOK)
    {
    
    CDC dcPrint;
    dcPrint.Attach(dlgPrint.GetPrinterDC());
    
    DOCINFO myPrintJob;
    myPrintJob.cbSize = sizeof(myPrintJob);
    myPrintJob.lpszDocName = "MeinDruckAuftrag";
    myPrintJob.lpszOutput = NULL;
    myPrintJob.lpszDatatype = NULL;
    myPrintJob.fwType = NULL;
    
    if (dcPrint.StartDoc(&myPrintJob)>=0)
    {
    
    dcPrint.StartPage();
    UpdateData(TRUE);
    m_strAusgabe.OemToAnsi();
    // Zeichnen beginnen -> Den inhalt des Editfeldes.. klappt aber....eben!
    dcPrint.TextOut(0,0,m_strAusgabe);
    
    // Seite auswerfen
    dcPrint.EndPage();
    
    // Dokument schließen
    dcPrint.EndDoc();
    }
    
    // Druckergerätekontext löschen
    dcPrint.DeleteDC();
    }
    
    CDialog::OnOK();
    }
    

    Er druckt den Text aus, damit bin ich zufrieden. :p
    Nur: Wenn ich ein mehrzeiliger Text habe, druckt der mir diese zeilen leider alle nur auf eine Zeile! 😡

    also im Editfeld steht:

    1
    2
    Test

    dann druckt der einfach:

    1[]2[][]3[]Test
    anstatt

    1
    2
    3
    Test!!!

    Warum ist das so 🙄 und kann mir einer mal erklären, wie man dieses Problem umgehen kann?? 😕 Danke! 😉

    mfg
    Programmer

    [ Dieser Beitrag wurde am 06.11.2002 um 09:24 Uhr von Programmer85 editiert. ]



  • hm, liegt evtl. an den Zeilenumbrüchen.

    Entweder ist "\r\n" richtig oder nur "\n".

    Devil



  • Ich mag Doppelpostings nicht ! 😡

    Den Inhalt eines Editfeldes ausdrucken....



  • ne!
    Entweder ist "\r\n" richtig oder nur "\n".

    gibts net!
    Ich kann dort eingeben, was ich will!
    Wenn ich ENTER betätige, geht der dort automatisch auf eine neue Zeile.
    Nur beim drucken gibts da eben die probs....



  • Wenn das wirklich nicht geht, dann würde ich für jede Zeile im Edit Feld ein TextOut machen. Verstehen?

    z.B.: (Pseudocode)

    for(int i=0; i<Zeilenanzahl; i++)
    {
    TextOut(0, 10*i, TextInZeile(i)); //Hier ist 10 der Zeilenabstand
    }

    Bitte steinigt mich nicht wenn dass nicht geht, ich hab das jetzt mal so aus dem Arm geschüttelt, und konnte es nicht testen



  • Thread geschlossen wegen Missachtung der Mod`s.

    Programmer85:
    Entweder du schreibst in deinem ersten Posting weiter, wo ich übrigens dein Problem bereits erklärt habe oder du hilfst dir selbst.
    Es macht keinen Sinn für das selbe Problem mehrere Postings zu öffnen und nicht auf die Antworten einzugehen.
    Die Druckausgabe kann man nicht in ein paar Sätzen erklären. Dazu braucht man etwas Verständniss der Grafikausgabe.
    Wenn du dich in das Thema einarbeiten möchtest helfe ich dir gerne aber nur wenn du dich an die Regeln hältst.


Anmelden zum Antworten