大家好,请教下,我在编译如下代码时出现如下错误,寻求帮助,谢谢!
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:\myfile\visual studio 2012\projects\xuglassform\xuglassform\cteformview.cpp(100): error C2664: “CListCtrl::SetItemText”: 不能将参数 3 从“CStringW”转换为“LPCTSTR”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>d:\myfile\visual studio 2012\projects\xuglassform\xuglassform\cteformview.cpp(101): error C2664: “CListCtrl::SetItemText”: 不能将参数 3 从“CStringW”转换为“LPCTSTR”
1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符
1>d:\myfile\visual studio 2012\projects\xuglassform\xuglassform\cteformview.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:\myfile\visual studio 2012\projects\xuglassform\xuglassform\cteformview.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编码会带来多少改变呢?谢谢!