将VC++6.0项目转换为VS2010项目时遇到的问题与解决方法

从VC++到VS的开发平台转换十分常见,特此记录下可能有参考价值的报错与应对方法,供参考。

我所转换的项目是一个带有GUI界面的机器人控制程序,原本在VC6平台上开发,并且可以正常运行。从学长那里拷贝到我的新电脑后,我希望用VS2010继续开发,因此实行了这次平台转换。首先双击 .dsw 文件,VS2010将会有如下提示:

选择“是”,将VC工程转化为VS2010项目。转化完成后如下:

直接F5调试,弹出提示:


选择“是”。之后我遇到了以下报错:

1)error C2440: “static_cast”: 无法从“BOOL (__thiscall CXWRobotDlg::* )(void)”转换为“AFX_PMSG”
           在匹配目标类型的范围内没有具有该名称的函数

解决方法:由于VC++自动添加的消息处理函数返回值默认是void,所以需要把对应函数的返回值改为void即可。

1.点击右键转到位置,本例中是:

</pre><pre name="code" class="cpp">	afx_msg bool OnBUTTONOpenDevice();
	afx_msg bool OnBUTTONDeviceSettings();

其中OnBUTTONOpenDevice与OnBUTTONDeviceSettings是BOOL型,需要改写成void.

2.右键OnBUTTONOpenDevice转到声明: afx_msg BOOLOnBUTTONOpenDevice(); 改为 afx_msg void OnBUTTONOpenDevice();

3.右键OnBUTTONOpenDevice转到定义

BOOL CXWRobotDlg::OnBUTTONOpenDevice() 
{
	// TODO: Add your control notification handler code here
	HANDLE hNewKeyHandle;

	//OpenDevice
	hNewKeyHandle = VCS_OpenDeviceDlg(&m_dErrorCode);
	if(hNewKeyHandle)
	{
		//Close Previous Device
		if(m_KeyHandle) VCS_CloseDevice(m_KeyHandle,&m_dErrorCode);
		m_KeyHandle = hNewKeyHandle;
	//	if(SetTimer(1,100,NULL)) m_oUpdateActive = TRUE;
		return TRUE;
	}
	else
	{
		AfxMessageBox("Can't open device!"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值