移動光標位置,響應退格和回車按鈕

//移動插入符,鼠標按下
void CView::OnLButtonDown(UINT nFlags,CPoint point)
{
 SetCaretPos(point);//設置位置
 m_strLine.empty();
 m_ptOrigin =point;
}

 

 

//響應OnChar消息,退格和回車和其它按鍵

void CView::OnChar(UINT nChar,...)
{
 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.TextOutW(m_ptOrigin.x, m_ptOrigin.y, m_strLine);
  m_strLine = m_strLine.Left(m_strLine.GetLength()-1);
  dc.SetTextColor(clr);
 }


 else                                    //字符
 {
  m_strLine += nChar;
 }


 CSize sz = dc.GetTextExtent(m_strLine);
 CPoint pt;
 pt.x = m_ptOrigin.x+sz.cx;
 pt.y = m_ptOrigin.y;

 SetCaretPos(pt);
 dc.TextOut(m_ptOrigin.x, m_ptOrigin.y, m_strLine);

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章