1 CString csSenMsg; // 要发送的消息 2 3 m_edt_sendMsg.GetWindowText(csSenMsg); // 获得编辑框内容 4 5 if(csSenMsg=="") 6 { 7 AfxMessageBox(_T("空字符串,不能发送!")); 8 return; 9 } 10 CStringA _csSenMsg; 11 _csSenMsg = csSenMsg; 12 13 m_lst_log.InsertString(m_lst_log.GetCount(),_T("你发出的信息如下:")); 14 int i = m_lst_log.GetCount(); 15 m_lst_log.InsertString( m_lst_log.GetCount(),csSenMsg ); 16 int j = m_lst_log.GetCount(); 17 m_lst_log.SetCurSel(m_lst_log.GetCount()-1); 18 19 //*(m_pCSocRecv->m_pCArcOut)<< csSenMsg; // 失败方法之一 20 m_pCSocRecv->m_pCArcOut->Write(_csSenMsg.GetBuffer(),_csSenMsg.GetLength()); 21 m_pCSocRecv->m_pCArcOut->Flush();
正确代码如上:
遇到问题之1:
UNICODE字符编码与ANSI的转换,解决方法见第10、11行。
遇到问题之2:
转换后的ANSI编码,用“流输出”(第19行)出错,发送的数据多出一个首字符,代表这次传输的字符个数,解决方法见第20行。
遇到问题之3:
listbox的addstring()函数和Insertstring()函数的区别,前者会自动按行首字符排序所有列表对象,例如:“1111”一定会插入到“2111”前面,数字一定会插入到字母前面。解决方法,用后者替代前者。
原文:http://www.cnblogs.com/yuwl26/p/4358931.html