建立一个工程,叫Mfctest,单文档,View部分继承CEditView。
请看下面的代码:
void CMfctestView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
  // TODO: Add your message handler code here and/or call default
  if(nChar==VK_RETURN)
  {
    //获取对应的文档对象
    CMfctestDoc* pDoc = GetDocument();
    //确保文档对象有效
    ASSERT_VALID(pDoc);
    //获取与本视图对应的编辑控件
    CEdit& edit = GetEditCtrl();
    //从编辑控件中获取最后一行文本内容
    TCHAR buffer[100];
    memset(buffer, 0, sizeof(buffer));
    int index = edit.GetLineCount() - 1;
    edit.GetLine(index, buffer, sizeof(buffer)-1);
  }

  CEditView::OnChar(nChar, nRepCnt, nFlags);
}
我想在输入回车的时候,把CEditView里最后一行的内容传给buffer,在实际调试中,发现有问题,比如:
我输入“hehe”(输入的是引号内的字符),结果调试时,发现buffer里面的内容是这样的:
buffer[0] = 'h';
buffer[1] = 'e';
buffer[2] = 'h';
buffer[3] = 'e';
buffer[4] = '?';
buffer[5] = '2';
buffer[6] = ' ';//(引号内的字符为ASCII码为0x13的字符)
buffer[7] = ''; //(引号内的字符为ASCII码为0x00的字符)
...
buffer[99]='';(从buufer[7]到buffer[99],都是0x00)
大家发现没有,平空多了buffer[4]和buffer[5]两个字符,buffer[6]应该是结束字符吧,还算正常。
我测试过多次,只要是输入“hehe”字符,就是这样结果,why?