将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.点击右键转到位置,本例中是:

	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 o

你可能感兴趣的:(探索心得,visual,studio,C++,visual,studio,2010)