多字节字符集错误

1>d:\lianxi20160303\sockettest\test1\test1\test1dlg.cpp(172): error C2664: “void ATL::CStringT::Format(const wchar_t *,...)”: 不能将参数 1 从“const char [12]”转换为“const wchar_t *”
1>          with
1>          [
1>              BaseType=wchar_t,
1>              StringTraits=StrTraitMFC_DLL
1>          ]
1>          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>d:\lianxi20160303\sockettest\test1\test1\test1dlg.cpp(196): error C2664: “CListBox::AddString”: 不能将参数 1 从“const char [13]”转换为“LPCTSTR”
1>          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换

以上错误的发生

// TODO: 在此添加控件通知处理程序代码
	//连接服务器
	BYTE nField[4];
	CString sIP;
	UpdateData();
	m_ServerIP.GetAddress(nField[0], nField[1],nField[2],nField[3]);
	sIP.Format("%d.%d.%d.%d", nField[0], nField[1],nField[2],nField[3]);

多字节字符集,所以LPTSTR是char*而不是wchar_t*
求长度用的是strlen不是wcslen
 
  

多字节字符集错误_第1张图片

字符集设置,使用Unicode自负自,改为使用多字节字符集

1>d:\lianxi20160303\sockettest\test1\test1\clientsocket.cpp(35): error C2664: “CListBox::SetTopIndex”: 不能将参数 1 从“Ctest1Dlg *”转换为“int”
1>          没有使该转换得以执行的上下文
1>d:\lianxi20160303\sockettest\test1\test1\clientsocket.cpp(35): error C2227: “->m_ListWords”的左边必须指向类/结构/联合/泛型类型
1>d:\lianxi20160303\sockettest\test1\test1\clientsocket.cpp(35): error C2228: “.GetCount”的左边必须有类/结构/联合
1>d:\lianxi20160303\sockettest\test1\test1\clientsocket.cpp(35): error C2059: 语法错误:“)”
1>

这些问题,只是因为程序中少了一个括号


void CClientSocket::OnConnect(int nErrorCode)
{
	// TODO: 在此添加专用代码和/或调用基类
//#include "test1Dlg.h"
	if(nErrorCode)
	{
		AfxMessageBox("连接失败,请您重试");
		return ;
	}
	((Ctest1Dlg*) (AfxGetApp()->m_pMainWnd))->m_ListWords.AddString("连接服务器成功");

	((Ctest1Dlg*) (AfxGetApp()->m_pMainWnd))->m_ListWords.SetTopIndex( ((Ctest1Dlg*)(AfxGetApp()->m_pMainWnd))->m_ListWords.GetCount()-1);

	CAsyncSocket::OnConnect(nErrorCode);
}


你可能感兴趣的:(windows)