MFC 文本编程 利用退格键 删除时的 光标问题。 请各位高手帮忙 谢谢!!!!!!!
int CTEXTView::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码 CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics(&tm); CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight); ShowCaret(); return 0;}void CTEXTView::OnLButtonDown(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 SetCaretPos(point); m_strLine.Empty(); //保存输入的内容 m_ptOrigin=point; //光标的开始位置 CView::OnLButtonDown(nFlags, point);}void CTEXTView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags){ // TODO: 在此添加消息处理程序代码和/或调用默认值 CClientDC dc(this); //设置字体 CFont font; font.CreatePointFont(200,_T("华文行楷"),NULL); CFont *pOldfont=dc.SelectObject(&font); 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.TextOutW(m_ptOrigin.x,m_ptOrigin.y,m_strLine); m_strLine=m_strLine.Left(m_strLine.GetLength()-1); dc.SetTextColor(clr); } else { m_strLine+=static_cast<char>(nChar); } CSize sz=dc.GetTextExtent(m_strLine); CPoint pt; pt.x=m_ptOrigin.x+sz.cx; pt.y=m_ptOrigin.y; SetCaretPos(pt); dc.TextOutW(m_ptOrigin.x,m_ptOrigin.y,m_strLine); dc.SelectObject(pOldfont); CView::OnChar(nChar, nRepCnt, nFlags);}