Zeilendrucken, doch wie TextHoehe ermitteln???
-
Hallo!
Weiss jemand wie ich die Hoehe einer Zeile beim Drucken ermitteln kann??
Die ist bei jedem Drucker anders... Zur Zeit habe ich konstante Werte fuer eine Zeile: py+=55;
Das geht bei einigen Druckern gut, bei einigen wieder nich... (Zeilen liegen etwas uebereinander...)Wie kann ich also die Hoehe einer Zeile ermitteln???
void CMovieDBDlg::Print() { HDC hdcPrn; CPrintDialog PrintDlg(FALSE, PD_ALLPAGES | PD_RETURNDC, NULL); PrintDlg.DoModal(); hdcPrn = PrintDlg.GetPrinterDC(); if(hdcPrn != NULL) { // create a CDC and attach it to the default printer CDC pDC; pDC.Attach(hdcPrn); int cx = pDC.GetDeviceCaps(PHYSICALWIDTH); int cy = pDC.GetDeviceCaps(PHYSICALHEIGHT); bool newpage = 1; int count = 0; int py; CString sPageCount; int iPageCount = 0; const int iLeftMargin = 100; const int iRowCDName = 2000; CRect rcHeaderBox; CRect rcFooterBox; rcHeaderBox.SetRect(iLeftMargin, 0, cx, 55); rcFooterBox.SetRect(iLeftMargin, cy - 100, cx, cy - 45); pDC.StartDoc("Media DB"); for (int i = 0; i < m_szMovie.GetItemCount(); i++) { if (newpage) { pDC.StartPage(); py = 0; iPageCount++; //Print Header pDC.SetBkColor(RGB(228,228,228)); pDC.ExtTextOut(iLeftMargin, py, ETO_OPAQUE, rcHeaderBox, "", NULL); pDC.TextOut(iLeftMargin, py, "Media Name"); pDC.TextOut(iRowCDName, py, "Nr"); py = 70; newpage = false; } pDC.TextOut(iLeftMargin,py,m_szMovie.GetItemText(i,0)); pDC.TextOut(iRowCDName, py, m_szMovie.GetItemText(i,1)); py+=55; if (py > (cy - 100)) { // Print Footer py = cy - 100; pDC.SetBkColor(RGB(228,228,228)); pDC.ExtTextOut(iLeftMargin, py, ETO_OPAQUE, rcFooterBox, "", NULL); pDC.TextOut(iLeftMargin, py, m_szUser + "'s Media Datenbank"); sPageCount.Format("%d", iPageCount); pDC.TextOut(iRowCDName, py, "Page: " + sPageCount); pDC.EndPage(); newpage = true; } } // Print Footer py = cy - 100; pDC.SetBkColor(RGB(228,228,228)); pDC.ExtTextOut(iLeftMargin, py, ETO_OPAQUE, rcFooterBox, "", NULL); pDC.TextOut(iLeftMargin, py, m_szUser + "'s Media Datenbank"); sPageCount.Format("%d", iPageCount); pDC.TextOut(iRowCDName, py, "Page: " + sPageCount); pDC.EndPage(); pDC.EndDoc(); pDC.DeleteDC(); }*Ratlos sei...
Gruesse,
KnOxX
-
Das Habe ich mir Errechnet wobei ich von den Maßen eines Din A4 Blattes ausgegangen bin.
Anzahl X Pixel durch 210mm = X Pixel pro Millimeter
Anzahl Y Pixel durch 300mm = Y Pixel pro MillimeterDie Höhe der schrift kanst du ja auch bestimmen!
Siehe CFont und SelectObject()
-
Danke fuer die Antwort!!
Ich wuerde es nur gerne etwas dynamischer haben

Hier habe ich es gefunden:
[url] http://www.codeproject.com/printing/print_support.asp [/url]
Gruesse,
KnOxX
-
wow das hier ist genau das was ich gebraucht habe.
Nur weis ich nicht wie ich das neue CRect object einbauen soll bzw. benutzen mit dem CDC objekt...
:-\
Könntet ihr mir da helfen pls?

MfG
T1c4L