图像配准实现代码VC6.0移植VC2010问题总结

图像配准实现代码源自《精通Visual C++数字图像处理典型算法及实现》第十章 

下面是我把代码移植到VC2010过程中遇到的问题及解决办法

1.“CWinApp::Enable3dControls”引起的C4996警告

warning C4996: 'CWinApp::Enable3dControls': CWinApp::Enable3dControls is no longer needed. You should remove this call.

通常向导生成的代码是:

#ifdef _AFXDLL
   Enable3dControls();            // Call this when using MFC in a shared DLL
#else
   Enable3dControlsStatic();    // Call this when linking to MFC statically
#endif
这两个函数的调用是旧的MFC版本对新版本的操作系统特性的支持,在新的(那个时候是新的)Windows 95平台上要这样调用一下才能使用新的Windows 3D样式的控件,否则就是老的Win 3.2样子的控件。想当初喜欢OWL就是因为感觉它的控件比较“酷”,比如那个带底纹的对话框,菱形的checkbox,还有带图标的“OK”按钮,看到MFC作出来的灰灰的界面就觉得土,不过后来就知道MFC做界面也是很漂亮的,比如我做的。。。。,再打住。对于新的MFC版本来说已经不需要再调用这两个函数了,参考前面的方法,用_MSC_VER对其隔离就行了:

#if _MSC_VER <= 1200 // MFC 6.0 or earlier
    #ifdef _AFXDLL
        Enable3dControls();            // Call this when using MFC in a shared DLL
    #else
        Enable3dControlsStatic();    // Call this when linking to MFC statically
    #endif
#endif

2.error C2259: “CException”: 不能实例化抽象类
MFC较好地将异常封装到CException类及其派生类中,自成体系,下表给出了MFC 提供的预定义异常:
CMemoryException:内存不足
CFileException:文件异常
CArchiveException:存档/序列化异常
CNotSupportedException:响应对不支持服务的请求
CResourceException:Windows 资源分配异常
CDaoException:数据库异常(DAO 类)
CDBException:数据库异常(ODBC 类)
COleException:OLE 异常
COleDispatchException:调度(自动化)异常
CUserException:用消息框警告用户然后引发一般 CException 的异常
所以只要把上面的CException与异常类相对应的.比如文件异常,改成CFileException.
代码中采用将所有的CException改成了CFileException

3.warning C4244: “=”: 从“ULONGLONG”转换到“DWORD”,可能丢失数据

ULONGLONG是64位的,DWORD是32位的,只要文件大于4G,转换就会造成数据错误,如果小于,则没关系。
 解决办法:
1、强制转换;A=(DWORD)B; 
2、去掉编译警告:在h文件加入#pragma warning(disable:4244)

4.如何保存256BMP格式
请使用windows自带的画图即可
保存时候选择另存为 256色位图

你可能感兴趣的:(异常,VS2010,移植,图像配准)