1 创建单文档应用程序;
2 插入光标,为View类添加OnCreate函数,加入如下代码
CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics(&tm); CreateSolidCaret( tm.tmAveCharWidth/2,tm.tmHeight ); ShowCaret();
3 增加字符输入,为View类添加OnChar函数,加入如下代码
CClientDC dc(this); LOGFONT log; GetObject( ::GetStockObject(DEFAULT_GUI_FONT),sizeof(log),&log ); log.lfHeight = 20; log.lfWidth = 20; log.lfCharSet = GB2312_CHARSET; lstrcpy( log.lfFaceName,"黑体" ); CFont font; font.CreateFontIndirect(&log); CFont *pOrgFont = dc.SelectObject(&font); TEXTMETRIC tm; dc.GetTextMetrics(&tm); if(nChar==0x0d) /*回车*/ { m_strText=""; m_jumpOffPoint.x = 0; m_jumpOffPoint.y += tm.tmHeight; } else if(nChar==0x08) /*删除*/ { COLORREF color = dc.SetTextColor(dc.GetBkColor()); dc.TextOut(m_jumpOffPoint.x,m_jumpOffPoint.y,m_strText); m_strText = m_strText.Left(m_strText.GetLength()-1); dc.SetTextColor(color); } else { m_strText += (wchar_t)nChar; } CSize size = dc.GetTextExtent(m_strText); CPoint point; point.x = m_jumpOffPoint.x+size.cx; point.y = m_jumpOffPoint.y; SetCaretPos(point); dc.TextOut(m_jumpOffPoint.x,m_jumpOffPoint.y,m_strText); dc.SelectObject(pOrgFont);
存在问题:
回车有残影,退格有残影