Inherit CEdit Class 反向输入(VC++)

CEdit的继承类,可以反向输入。
(1)设置Edit box的显示方向为"right";
(2)重写CEdit的消息响应函数:
void CEditEx::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
 CEdit::OnChar(nChar, nRepCnt, nFlags);
 CPoint pt = GetCaretPos();
 CDC* pDC = GetDC();
 CSize sz = pDC->GetTextExtent(nChar);  //获取输入字符的size
 ReleaseDC(pDC);
 pt.x-=sz.cx;  //光标向左移动
 SetCaretPos(pt);
 ShowCaret();
 int nBeg, nEnd;
 GetSel(nBeg, nEnd);
 nBeg--;
 SetSel(nBeg, nBeg);
}

void CEditEx::OnLButtonDown(UINT nFlags, CPoint point)
{
 CEdit::OnLButtonDown(nFlags, point);
 
 CString strText;
 GetWindowText(strText);
 CPoint pt = PosFromChar(0);
 
 if (point.x<pt.x)
 {//如果点击的位置不在文字区域内,就把光标定位到最左边
  SetCaretPos(pt);
  ShowCaret();
  SetSel(0);
 }
}

posted @ 2007-06-15 22:46  Surmount.DB  阅读(311)  评论(1编辑  收藏  举报