问题描述
- visaual studio 2008 计算出错
-
请教下大家:我c++ 6.0中通过的代码,在visual 2008中无法通过,该当如何进行呢?谢谢!
void CJisuanqiFormView::OnBnClickedBang()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);double Bang = m_strbang*0.4535924; float aa=(float)Bang; char cc[20]; sprintf(cc,"%.0f",aa); GetDlgItem(IDC_STATIC_BANG)->SetWindowText(cc);
}
io 2008projectsxuglassxuglassjisuanqiformview.cpp(74) : error C2664: “CWnd::SetWindowTextW”: 不能将参数 1 从“char [20]”转换为“LPCTSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>生成日志保存在“file://d:MyFileVisual Studio 2008ProjectsXuGlassXuGlassDebugBuildLog.htm”
1>XuGlass - 1 个错误,1 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
解决方案
在工程 的设备中的【常规】的字符集直接将 多字节,目前可能是 Unicode
解决方案二:
GetDlgItem(IDC_STATIC_BANG)->SetWindowText( _T(cc));
解决方案三:
或者
char cc[20];
->
wchar_t cc[20];
GetDlgItem(IDC_STATIC_BANG)->SetWindowText((LPCTSTR)cc);
解决方案四:
caozhy:
早晨好,谢谢您的回复!在使用 GetDlgItem(IDC_STATIC_BANG)->SetWindowText( _T(cc));时出现如下提示,有何办法呢,谢谢!
1>正在编译...
1>JisuanqiFormView.cpp
1>d:myfilevisual studio 2008projectsxuglassxuglassjisuanqiformview.cpp(76) : warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:program files (x86)microsoft visual studio 9.0vcincludestdio.h(366) : 参见“sprintf”的声明
1>d:myfilevisual studio 2008projectsxuglassxuglassjisuanqiformview.cpp(77) : error C2065: “Lcc”: 未声明的标识符
1>生成日志保存在“file://d:MyFileVisual Studio 2008ProjectsXuGlassXuGlassDebugBuildLog.htm”
1>XuGlass - 1 个错误,1 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
解决方案五:
当直接这样干时,编译没有错误了,但计算时显示后面出现乱码
UpdateData(TRUE);
double Bang = m_strbang*0.4535924;
float aa=(float)Bang;
char cc[20];
sprintf(cc,"%.0f",aa);
GetDlgItem(IDC_STATIC_BANG)->SetWindowText((LPCTSTR)cc);
![图片说明](http://img.ask.csdn.net/upload/201508/10/1439162388_137918.png)
解决方案七:
谢谢!确然,在向导中默认就是选择Unicode,非常感谢,代码出问题也是源于此处。谢谢两位的帮助!
解决方案八:
求助:visual 2008编译通过,换成2012时又出错了啊,
代码如下:
UpdateData(TRUE);
// TODO: Add extra validation here
///////////////////////////////////////////////////////////////
//磅换算为公斤和立升
double bang = m_strbang*0.4535924;
float aa=(float)bang;
char cc[20];
sprintf(cc,"=%.0fKg",aa);
GetDlgItem(IDC_MFCLINK3)->SetWindowText(cc);
1>d:myfilevisual studio 2012projectsxuglassformxuglassformjisuanformview.cpp(68): error C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> d:program files (x86)microsoft visual studio 11.0vcincludestdio.h(357) : 参见“sprintf”的声明
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========