vc6.0工程移植vs2010

最近移植了工程,总结一下遇到的一些修改:
1、error C1189: #error : This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended.

在StdAfx.h 文件中
改:#define _WIN32_WINNT 0x0501 //0x0400

2、error C2065: ‘i’ : undeclared identifiere

VC编译器允许出现
for(int i = 0; ; i++)
{
}
i = 0; //此处在vs2010会报错误
解决办法:
int i;在此处定义变量,如此作用域便于原先的一致,
for(i = 0; ; i++)
{
}
i = 0;
注意的是有的会在结尾用来判断
例如:
for(int i = 0; i < count ; i++){
}
if(i == count){
}

3、if (!CMiniFrameWnd::CreateEx(dwExStyle, NULL, &afxChNil, dwStyle, rectDefault, pParent))
Error 2 error C2065: ‘afxChNil’ : undeclared identifiere
afxChNil 在新的MFC不兼容,网上的解决方案是 改为NULL

4、error C2664: ‘MultiByteToWideChar’ : cannot convert parameter 5 from ‘WORD [260]’ to ‘LPWSTR’
1)加强制转换(LPWSTR), LPWSTR 是 wchar_t, WORD 是 unsigned short
2)根据编译器有个开关 trait wchar_t as build-in type, 打开的话 unsigned short 和 wchar_t 不一样的类型,wchar_t变成了内建类型,关掉开关解决;2)wchar_t 这里是16位的,即使在某些平台变成32位,16位扩到32位并不会有损失,于是可以不关开关,将unsigned short强制转为wchar_t也可以;
在这里插入图片描述
5、error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
VC6.0支持未定义类型的默认为 int型,vs2010不支持, 加上类型即可,最好是默认的int 型,当然要根据代码逻辑修改

6、error C2668: ‘pow’ : ambiguous call to overloaded function
pow函数在新版本中有不同的参数类型,根据函数原型加上强制类型转换即可;

7、error C2440: ‘static_cast’ : cannot convert from ‘UINT (__thiscall CSizingControlBar:: * )(CPoint)’ to ‘LRESULT (__thiscall CWnd:: * )(CPoint)’
定位:ON_WM_NCHITTEST()
UINT CCoolBar::OnNcHitTest(CPoint point)
改为:LRESULT CCoolBar::OnNcHitTest(CPoint point)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值