关于MFC的文本
为什么要先输出插入符再输出文本啊 比如
void CMyView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
CClientDC dc(this);
TEXTMETRIC tm;
dc.GetTextMetrics(&tm);
if(0x0d==nChar)
{m_strLine.Empty();
m_ptOrigin.y+=tm.tmHeight;
}
else if(0x08==nChar)
{COLORREF clr=dc.SetTextColor(dc.GetBkColor());
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);
m_strLine=m_strLine.Left(m_strLine.GetLength()-1);
dc.SetTextColor(clr);
}
else
m_strLine+=nChar;
// dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);
CSize sz=dc.GetTextExtent(m_strLine);
CPoint pt;
pt.x=m_ptOrigin.x+sz.cx;//+11;//.......
pt.y=m_ptOrigin.y;
// 关键看下面这两行就够了!如果把下面两行的顺序颠倒的话就会出错!
SetCaretPos(pt); // 输出插入符
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine); // 输出文本
CView::OnChar(nChar, nRepCnt, nFlags);
}