问题描述
- vs 2012 Cstring 出错的问题
-
大家好,请教下,我在编译如下代码时出现如下错误,寻求帮助,谢谢!void CCteFormView::UpdateList(CCteSet &rs)
{int i=0; int nCount=0; CString strID,strWorkHours,strTime; // 清除列表框内容 m_ctrList.DeleteAllItems(); // 对数据表中所有记录进行处理 rs.Open(); while(!rs.IsEOF()) { CString strid; m_ctrList.InsertItem(i,""); strid.Format("%d",rs.m_ID); m_ctrList.SetItemText(i, 0, strid); m_ctrList.SetItemText(i, 1, rs.m_data.Format("%Y-%m-%d")); m_ctrList.SetItemText(i, 2, rs.m_name); m_ctrList.SetItemText(i, 3, rs.m_luhao); m_ctrList.SetItemText(i, 4, rs.m_liaose); 出错提示如下: 1> CteFormView.cpp
1>d:myfilevisual studio 2012projectsxuglassformxuglassformcteformview.cpp(100): error C2664: “CListCtrl::SetItemText”: 不能将参数 3 从“CStringW”转换为“LPCTSTR”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>d:myfilevisual studio 2012projectsxuglassformxuglassformcteformview.cpp(101): error C2664: “CListCtrl::SetItemText”: 不能将参数 3 从“CStringW”转换为“LPCTSTR”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>d:myfilevisual studio 2012projectsxuglassformxuglassformcteformview.cpp(102): error C2664: “CListCtrl::SetItemText”: 不能将参数 3 从“CStringW”转换为“LPCTSTR”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符在选用odbc 数据库acces连接时出现这样的情况:是CStringW,而不是c++6.0中的CString
CStringW m_name;
CStringW m_luhao;
CStringW m_liaose;
CStringW m_biaoa;
CStringW m_zhijing;
CStringW m_gaodu;
CStringW m_piancha;
CStringW m_shizhi;
解决方案
前面加一个(LPCTSTR)转换一下。类型转换
解决方案二:
估计你的项目是从VC6.0升级的,项目设置unicode,一劳永逸解决。
解决方案三:
调用 CString 的 GetBuffer() 方法
最后要配对调用 ReleaseBuffer() 方法
解决方案四:
如果使用unicode
其它方面又出现问题,蒙了,如
void CCteFormView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
//1-日期;2-品名;
m_ctrList.InsertColumn(0,"ID",LVCFMT_CENTER,30);
m_ctrList.InsertColumn(1,"日期",LVCFMT_CENTER,80);//??-??
m_ctrList.InsertColumn(2,"品名",LVCFMT_CENTER,60);//??-??
错误提示
1>d:myfilevisual studio 2012projectsxuglassformxuglassformcteformview.cpp(60): error C2664: “int CListCtrl::InsertColumn(int,LPCTSTR,int,int,int)”: 不能将参数 2 从“const char [3]”转换为“LPCTSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
解决方案五:
有vc6 的ANSI编码变为vs的unicode编码会带来多少改变呢?谢谢!