Drucken - Drucken bei Mulitlineausgabe
-
Hi Forum,
Ich hab ein Editfeld (CString, m_sText) mit folgendem Inhalt:
Zeile 1
Zeile 2
Zeile 3Zeile 5
Zeile 6Nun, ich möchte dies identisch wie es drin steht auf das Papier bringen.
Drucken tut er zwar, doch das Ergebnis ist erschütternd..So siehts dann aus:
Zeile1[][]Zeile2[][]Zeile3[][][][]Zeile5[][]Zeile6[][]
und dies auf EINER Zeile...
Warum das denn? Gibts da net irgendwie ne Funktion das man dem dc.Print sagen kann, das Editfeld für EINEN Zeilenumbruch \r\n und NICH \n verwendet??
mfg
Pro
-
Hat sich erledigt Danke!
Für alle die es immer noch nicht wissen und noch was für die FAQ.Aus einem Editfeld (welches natürlich CString sein muss), wird nie mit dcPrint.TextOut(); gedruckt.
Deshalb immer mit dcPrint.DrawText(); drucken, dann klappt es auch.
Das folgenden Beispiel druckt den Inhalt des Editfeldest m_sText aus.rctA.right = 800;
rctA.bottom = 800;müssen eventuell angepasst werden, da dies die Verfügbare länge ist. Es kann sonst durchaus sein, das nur zwei Wörter einer Zeile ausgedruckt wird.
Hier das Beispiel
void CDruckertestDlg::OnButton1() { // TODO: Add your control notification handler code here CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this); UpdateData(TRUE); if (dlgPrint.DoModal()==IDOK) { CDC dcPrint; dcPrint.Attach(dlgPrint.GetPrinterDC()); DOCINFO myPrintJob; myPrintJob.cbSize = sizeof(myPrintJob); myPrintJob.lpszDocName = "PrintingTest"; myPrintJob.lpszOutput = NULL; myPrintJob.lpszDatatype = NULL; myPrintJob.fwType = NULL; if (dcPrint.StartDoc(&myPrintJob)>=0) { dcPrint.StartPage(); RECT rctA; rctA.left = 20; rctA.top = 30; rctA.right = 800; rctA.bottom = 800;; dcPrint.DrawText(m_sText, &rctA, DT_LEFT); dcPrint.EndPage(); dcPrint.EndDoc(); } dcPrint.DeleteDC(); } }
mfg
Programmer---> Warum FAQ Vorschlag? Es taucht immerwieder diesselbe Frage auf, auch in anderen Foren, warum das net geht. Da diese Leute (wie ich zuvor auch) TextOut anstatt DrawText verwenden.