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);
}
}