VC++深入详解中代码编译不通过
程序代码:
void CTest01View::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_strLine.Empty(); m_ptOrigin.y+=tm.tmHeight; } //退格键 else if(0x08==nChar) { COLORREF clr=dc.SetTextColor(dc.GetBkColor()); dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine); m_strLine=m_strLine.Left(m_strLine.GetLength()-1); dc.SetTextColor(clr); //dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine); } 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); CView::OnChar(nChar, nRepCnt, nFlags); }
这是<VC++深入详解>第5章关于字符输入显示的一段,m_strLine是CString类型的空串,用来存储输入的字符串。然后m_strLine+=nChar;这段就不能通过,提示“ error C2593: “operator +=”不明确”,一个CString类型,一个UINT类型,强制类型转换也不行。vs2005-2010-2012都不能编译通过,VC6.0倒是能过。但长远看,不可能永远用VC6吧,在VS中要怎么修改呢