16,548
社区成员




/*两个问题 :
*1、输入中文没无显示
*2、如图、如题 。。输入数据后光标会移动。这点没错,但是最新输入的一个字母的前一个字母会多了一根竖线。
*/
void Clesson5_1View::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
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 += (char)nChar;
}
dc.TextOut(m_ptOrigin.x, m_ptOrigin.y, m_strLine);
CView::OnChar(nChar, nRepCnt, nFlags);
CSize sz = dc.GetTextExtent(m_strLine);
CPoint pt;
pt.x = m_ptOrigin.x + sz.cx;
pt.y = m_ptOrigin.y;
SetCaretPos(pt);
}