void CsignalView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
HideCaret();
CsignalDoc* pDoc = GetDocument();
pDoc->m_TextString += nChar; //m_TextString 是CSting 类的,而且是CsignalDoc的公有成员,编译时出现错误说+=两边不成立
CClientDC dc(this);
dc.TextOut(m_BeginPoint.x,m_BeginPoint.y,pDoc->m_TextString);
CSize str_size = dc.GetTextExtent(pDoc->m_TextString);
m_CaretPos.x = m_BeginPoint.x+str_size.cx;
SetCaretPos(m_CaretPos);
ShowCaret();
CView::OnChar(nChar, nRepCnt, nFlags);
}
我的目的就是想用m_TextString 存处用户键入的字符,请问怎么解决(本人初学)

解决方案 »

  1.   

    下面代码可以通过编译: CString str = "hello" ; 
    UINT i = 111; 
    str += i ; 你的具体事什么错误,请贴出来。
      

  2.   

    我调试了一下,str += i ; 这行代码,CString 内部要进行两次 memcpy 操作,还要重新分配内存。不好。
    最好你事先分配一个缓冲区,这样会好一点。
      

  3.   

    我是在VC++.NET上编译的,上面的代码也是按照书上写的,可就是编译不过。没有其它的错误
    怎么分配一个缓冲区啊?本人初学不懂。还请指教