MFC中的SetWindowTextA的显示问题,请求大神指导
在前面的项目中,定义了CStaticm_CityName;CStaticm_CityInfo;vector<string>city;vector<string>info;...
在前面的项目中,定义了
CStatic m_CityName;
CStatic m_CityInfo;
vector<string> city;
vector<string> info;
用来保存城市名称以及信息。
void CListDemoDlg::OnLbnSelchangeList1()
{
// TODO: 在此添加控件通知处理程序代码
vector<string>::size_type t=m_List.GetCurSel(); //获取当前项下标
m_CityName.SetWindowTextA(city[t].c_str()); //设置显示城市名 error
m_CityInfo.SetWindowTextA(info[t].c_str()); //设置显示城市信息 error
}
现在最后两行代码会出错。
Error:class"CStatic"没有成员“SetWindowTextA”。 展开
CStatic m_CityName;
CStatic m_CityInfo;
vector<string> city;
vector<string> info;
用来保存城市名称以及信息。
void CListDemoDlg::OnLbnSelchangeList1()
{
// TODO: 在此添加控件通知处理程序代码
vector<string>::size_type t=m_List.GetCurSel(); //获取当前项下标
m_CityName.SetWindowTextA(city[t].c_str()); //设置显示城市名 error
m_CityInfo.SetWindowTextA(info[t].c_str()); //设置显示城市信息 error
}
现在最后两行代码会出错。
Error:class"CStatic"没有成员“SetWindowTextA”。 展开
1个回答
展开全部
更多追问追答
追问
谢谢回答,还有一个问题阁下可否随便回答一下:
while(in>>city_name>>city_info){
city.push_back(city_name);
info.push_back(city_info);
m_List.AddString(city_name.c_str()); //error
}
追答
因为你用的是UNICODE编码,所以AddString只接受LPCWSTR的指针(即UNICODE字符串),而string内部用的是MBCS编码。
有两种解决方法,第一种更彻底:
1、采用wstring替代string
2、
#include <atlconv.h>
将m_List.AddString(city_name.c_str());改为
USES_CONVERSION;
m_List.AddString(A2CW(city_name.c_str()));
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询