功能:實現文字的輸入!要求,回車在下一行輸入,而BackSpace則刪除一個字符。
void?CTest31View::OnChar(UINT?nChar,?UINT?nRepCnt,?UINT?nFlags)?


{
????//?TODO:?Add?your?message?handler?code?here?and/or?call?default
????CClientDC?dc(this);
????TEXTMETRIC?tm;
????dc.GetTextMetrics(&tm);
????if(0x0d?==?nChar)

????
{
????????m_str.Empty();
????????m_point.y?+=?tm.tmHeight;
????}
????else?if(0x08==nChar)

????
{
????????COLORREF?clr?=?dc.SetTextColor(dc.GetBkColor());
????????dc.TextOut(m_point.x,m_point.y,m_str);
????????m_str?=?m_str.Left(m_str.GetLength()-1);
????????dc.SetTextColor(clr);
????}
????else

????
{
????????m_str?+=?nChar;
????}
????CSize?sz?=?dc.GetTextExtent(m_str);
????CPoint?pt;
????pt.x?=?m_point.x?+?sz.cx;
????pt.y?=?m_point.y;
????SetCaretPos(pt);
????dc.TextOut(m_point.x,m_point.y,m_str);

????CView::OnChar(nChar,?nRepCnt,?nFlags);
}

int?CTest31View::OnCreate(LPCREATESTRUCT?lpCreateStruct)?


{
????if?(CView::OnCreate(lpCreateStruct)?==?-1)
????????return?-1;
????
????//?TODO:?Add?your?specialized?creation?code?here
????CClientDC?dc(this);
????TEXTMETRIC?tm;
????dc.GetTextMetrics(&tm);
????CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);
????ShowCaret();

????return?0;
}
void?CTest31View::OnLButtonDown(UINT?nFlags,?CPoint?point)?


{
????//?TODO:?Add?your?message?handler?code?here?and/or?call?default
????SetCaretPos(point);
????m_str.Empty();
????m_point?=?point;

????CView::OnLButtonDown(nFlags,?point);
}

中心思想:m_point表示的是插入符的位置,m_str則表示的是輸入的字符串!
對于回車和刪除鍵,則用兩個if來判斷,具體的實現,參加代碼部分,比較簡單!!
posted on 2010-02-22 13:55
deercoder 閱讀(498)
評論(0) 編輯 收藏 引用 所屬分類:
MFC程序設計入門