TabbedTextOut(): What am I doing wrong?
Mike Erickson -- mpericks@gnn.com Thursday, August 08, 1996 Environment: VC 1.52 WfW 3.11 In my doc I load a CStringList with strings preceded by a number of "\t" tabs to indent appropriately and attempt to draw the text to the printer DC in my view in OnPrint() like this C84inchDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CFont* pOldFont = pDC->SelectObject(&m_font);//12 pt Times N R int lineheight = GetCharHeight(pDC);//returns tmHeight + tmExternalLeading CString str; for( POSITION pos = pDoc->m_output.GetHeadPosition(); pos != NULL; ) { str = pDoc->m_output.GetNext(pos); pDC->TabbedTextOut(0, m_nPos, str,str.GetLength(),0,NULL,0); m_nPos -= lineheight; } m_nPos = 0; pDC->SelectObject(pOldFont); Mapping mode is LOENGLISH. This works great for all the printers I tried it on in Print Preview, but while actually printing on a few printers it clips off a seemingly random portion of each text line. It works on all the laser printers I tried, doesn't work on an ENCAD plotter or a Panasonic dot matrix. Both clip the text in the same way. If I take out the \t in the strings, everything is cool. I tried passing a tab position array with same results. This must be something really embarassing and stupid, so be gentle. Mike Erickson The Torrington Co. mpericks@gnn.com erickm@torrington.com
ppbillc@srv2.sj.ablecom.net Monday, August 12, 1996 > Environment: VC 1.52 WfW 3.11 > > In my doc I load a CStringList with strings preceded by a number of > "\t" tabs to indent appropriately and attempt to draw the text to > the printer DC in my view in OnPrint() like this > > C84inchDoc* pDoc = GetDocument(); > ASSERT_VALID(pDoc); > CFont* pOldFont = pDC->SelectObject(&m_font);//12 pt Times N R > int lineheight = GetCharHeight(pDC);//returns tmHeight + > tmExternalLeading > > CString str; > for( POSITION pos = > pDoc->m_output.GetHeadPosition(); pos != NULL; ) > { > str = pDoc->m_output.GetNext(pos); > pDC->TabbedTextOut(0, m_nPos, > str,str.GetLength(),0,NULL,0); > m_nPos -= lineheight; > } > > m_nPos = 0; > pDC->SelectObject(pOldFont); > > > Mapping mode is LOENGLISH. This works great for all the printers I > tried it on in Print Preview, but while actually printing on a few > printers it clips off a seemingly random portion of each text line. > It works on all the laser printers I tried, doesn't work on an ENCAD > plotter or a Panasonic dot matrix. Both clip the text in the same > way. If I take out the \t in the strings, everything is cool. I > tried passing a tab position array with same results. This must be > something really embarassing and stupid, so be gentle. > MIke, Try a system font see if the same thing happens. If not you logfont need to be zerod out. Bill
| Вернуться в корень Архива |