Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Druckerproblem... woran liegt folgendes Prob? ..-->

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.11.2002, 09:29 Uhr
~Programmer
Gast


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:


Code:
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.
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.11.2002, 01:40 Uhr
Andyk



Hi prorammer,
ich hab das Problem umgangen, indem ich zeilenweise ausgelesen und dann in einer Schleife pro Zeile einmal TextOut mit dem entsprechenden Inhalt aufgerufen habe. Das mit dem Zeileweise auslesen müsste bei Dir mit einer Abfrage auf CRLF am Ende eines Strings gehen.Du solltest auch nicht vergessen die y- Koordinate in TextOut bei jedem Schleifendurchgang zu ändern.

mfg,
Andyk
--
CU,
ANDYK
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.11.2002, 12:51 Uhr
~Programmer
Gast


Danke!
Wie hast du das geamcht? Könntest du eventuell... na du weist schon. Danke!

mfg
PRogrammer
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.11.2002, 17:07 Uhr
Andyk



Hi Programmer,
Schau mal obs' so hinhaut.

C++:
CString        CR    =__toascii(13),
            LF    =__toascii(10),
            sCRLF    =CR+LF,    //Zusammenbau von CRLF
            a;        //Einzelner Buchstabe
CStringArray    saParts;        //String Array zum der      einzelnen Zeilen->
                                            //Pro Zeile ein Eintrag
    int                i,
                    iOld,
                    iLineCount=1;            //Zeilenzähler

    UpdateData(true);
    
    for(i=0;i<=m_sEdit.GetLength()-1;i++)//Parsen des Strings;
    {                                     //m_sEdit entspricht dem Inhalt des Textfeldes
        a=m_sEdit.Mid(i,2);

        if(a==sCRLF)//Wenn CRLF gefunden dann...
        {
            if(iLineCount==1)//...in der ersten Zeile
            {
                iOld=0;
                saParts.Add(m_sEdit.Mid(iOld,i+1));
                iOld=i;
            }
            else//...Alle anderen Zeilen
            {
                saParts.Add(m_sEdit.Mid(iOld+2,i-iOld));
                iOld=i;
            }
            iLineCount++;
        }

        if(i==m_sEdit.GetLength()-1)
        {
            saParts.Add(m_sEdit.Right((m_sEdit.GetLength()-1)-iOld-1));//...Die letzte Zeile
        }
    }
   /*
    *    .....Bla,Bla,Druckerinitialisierungsgerödel
    */

    for(i=0;i<=iLineCount-1;i++)
    {
        int iZeilenFakt=100;    //Ich habe die Erfahrung gemacht
                                //das dieser Faktor bei jedem
                                //Drucker anders ist
        TextOut(0,iZeilenFakt*i,saParts.GetAt(i));
    }


mfg,
Andyk
--
CU,
ANDYK

Dieser Post wurde am 07.11.2002 um 17:11 Uhr von Andyk editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: