`
luliangok
  • 浏览: 816558 次
文章分类
社区版块
存档分类
最新评论

从VC6迁移到VS2005 - MESSAGE

 
阅读更多

在迁移一个CRC32程序时,遇到如下问题:

编译日志:


其中的错误大多与""静态转换有关。

主要说某个参数无法转换到另一个类型。

看MSDN关于消息影射相关规定:

Map entry

Function prototype

ON_MESSAGE( <message>, <memberFxn> )

afx_msg LRESULT memberFxn( WPARAM, LPARAM );

ON_REGISTERED_MESSAGE( <nMessageVariable>, <memberFxn> )

afx_msg LRESULT memberFxn( WPARAM, LPARAM );

ON_THREAD_MESSAGE( <message>, <memberFxn> )

afx_msg void memberFxn( WPARAM, LPARAM );

ON_REGISTERED_THREAD_MESSAGE( <nMessageVariable>, <memberFxn> )

afx_msg void memberFxn( WPARAM, LPARAM );


一、简单升级错误:

1)OnSetText

原声明:afx_msg LRESULTOnSetText(UINT, LPCTSTR)

更改为:afx_msgLRESULTOnSetText(WPARAM, LPARAM)

2)OnCRCThreadDone

原声明:afx_msg void OnCRCThreadDone(WPARAM, LPARAM);

更改为:afx_msg LRESULT OnCRCThreadDone(WPARAM, LPARAM);

3)OnGetText

原声明:afx_msg LRESULT OnGetText(UINT cchTextMax, LPTSTR szText);

更改为:afx_msg LRESULT OnGetText(WPARAM cchTextMax, LPARAM szText);

4)OnSetRange

原声明:afx_msg void OnSetRange(WPARAM, LPARAM range);

更改为:afx_msg LRESULT OnSetRange(WPARAM, LPARAM range);

5)OnSetRange32

原声明:afx_msg void OnSetRange32(WPARAM lower, LPARAM higher);

更改为:afx_msg LRESULT OnSetRange32(WPARAM lower, LPARAM higher);

6)OnSetShowText

原声明:afx_msg void OnSetShowText(WPARAM bShow, LPARAM);

更改为:afx_msg LRESULT OnSetShowText(WPARAM bShow, LPARAM);


二、VC系统函数更改后的错误

1)ON_WM_NCHITTEST

出现这个错误的原因可是“人力不可抗拒”之原因造成的,因为旧版本的 ON_WM_NCHITTEST 宏使用了

UINT (__thiscall CWzButton::* )(CPoint);

类型的类成员函数指针,其定义如下:

#define ON_WM_NCHITTEST() \
{ WM_NCHITTEST, 0, 0, 0, AfxSig_wp, \
(AFX_PMSG)(AFX_PMSGW)(UINT (AFX_MSG_CALL CWnd::*)(CPoint))&OnNcHitTest },


但是新版本变成了:

#define ON_WM_NCHITTEST() \
{ WM_NCHITTEST, 0, 0, 0, AfxSig_l_p, \
(AFX_PMSG)(AFX_PMSGW) \
(static_cast< LRESULT (AFX_MSG_CALL CWnd::*)(CPoint) > (&ThisClass :: OnNcHitTest)) },
UINT (__thiscall CWzButton::* )(CPoint);

修改的方法就是将你的OnNcHitTest函数由:

afx_msg UINT OnNcHitTest(CPoint point);

改成:

afx_msg LRESULT OnNcHitTest(CPoint point);

======================================================================本文 End==

这个程序是用在大文件下多线程CRC32的校验。

VC6版本的链接

VC8版本的链接


分享到:
评论

相关推荐

    VC6到VS2010迁移所有问题的解决方法

    例如,从Visual C++ 6.0 (简称VC6)迁移到Visual Studio 2010 (简称VS2010)。这一过程往往会遇到不少挑战,尤其是由于编译器差异和环境不兼容导致的各种错误和警告。本文将详细介绍在进行此类迁移时可能遇到的问题...

    130-VC-CRYPT-VS2005-VC6.0.rar_VC加密和解密_crypt_加密源码 VC

    "130-VC-CRYPT-VS2005-VC6.0.rar" 是一个压缩包,其中包含了130个基于VC(Visual C++)的加密和解密源码示例,分为VS2005和VC6.0两个版本。这些源码不仅对于学习加密算法原理具有很高的参考价值,而且可以作为实际...

    使用VC6.0或VS2005-2012开发必备的工具Visual assist x(破解版)

    一款使用VC6.0或VS2005-2012开发必备的工具Visual assist x(破解版)。永久破解。不反弹,哈哈。本人就是使用这个

    opencv-3.4.6-vc14_vc15.zip---官方OpenCV安装包

    opencv-3.4.6-vc14_vc15.zip---官方OpenCV安装包,可配合PaddleInference推理库部署Paddle模型使用

    移植vc6工程到vs2010所遇问题汇总

    "移植VC6工程到VS2010所遇问题汇总" 标题中的知识点:移植VC6工程到VS2010可能遇到的问题总结。 描述中的知识点:移植VC6工程到VS2010过程中可能会遇到的问题总结,这些问题可以在新建同名VS2010工程下移植过程中...

    vc运行时库(2005-2010,x86x64)

    在您提供的压缩包中,包含的是从2005年至2010年不同版本的VC运行时库,适用于x86(32位)和x64(64位)系统。 1. **Visual C++ 2005 (v8.0)** VC2005SP1可能指的是Visual C++ 2005 Service Pack 1,这是对原始2005...

    微软官方VC运行库--vc9到vc15-----2008到2017

    在本压缩包中,我们涵盖了从Visual C++ 2008(VC9)到Visual C++ 2017(VC15)的主要版本,包括32位和64位的安装程序,但遗憾的是,缺少了Visual C++ 2014(VC13)的运行库。 1. **Visual C++ 2008 (VC9)**:这是...

    VC 6.0工程转VS的方法

    Visual C++(简称VC)6.0作为一款经典的开发环境,虽然在很多方面仍然受到程序员的喜爱,但随着Visual Studio(VS)系列的不断进步,如VS 2015和2017,开发者逐渐转向使用这些现代IDE。然而,将旧的VC 6.0工程转换到...

    vc14-vs2015-运行时库64位.rar

    包括了concrt140d.dll,msvcp140d.dll-system32,msvcp140d.dll-sysWOW64,ucrtbased.dll,vcruntime140d.dll-system32,vcruntime140d.dll-sysWOW64

    libboost_system-vc80-mt-gd-1_53.lib 下载

    libboost_system-vc80-mt-gd-1_53.lib 不用自己再编译了,用了下可以使用的

    VC2005运行C++

    首先说一下版本对照:Visual c++ 6.0(单独的C++编译器),VC----7.0(微软第一次把VC嵌入到Visual Studio .net),VC2003----VC7.1,VC2005----VC8.0,VC2008----9.0,因为.net框架是基于项目的,所以C++程序在VC...

    vc运行库2005-2010

    标题提到的"vc运行库2005-2010"涵盖的是从Visual C++ 2005到Visual C++ 2010版本的运行库,这四个版本分别是:Visual C++ 2005 (VC9),Visual C++ 2008 (VC9),Visual C++ 2008 SP1 (VC9),以及Visual C++ 2010 ...

    VC6从入门到精通-VC与数据库管理

    《VC6从入门到精通-VC与数据库管理》是一本旨在帮助初学者和进阶者掌握Visual C++(简称VC)编程技术,并深入理解如何在VC环境中进行数据库管理的教程。通过对这本书的学习,读者可以了解到如何利用VC6这一经典开发...

    php-debug-pack-7.4.29-nts-Win32-vc15-x64

    pack-7.4.29-nts-Win32-vc15-x64php-debug-pack-7.4.29-nts-Win32-vc15-x64php-debug-pack-7.4.2

    官方VC运行库--vc9到vc15-----2008到2017.txt

    vc2008到vc2017, vc9到vc15, 32位和64位全有, vc13(2014) 没有找到, vc库百度网盘打包下载!!!

    VC助手(vc6-vc2005)都可用

    VC助手(vc6-vc2005)都可用,亲测可用,完美破解

    php-5.3.5-Win32-VC6-x86.zip

    标题 "php-5.3.5-Win32-VC6-x86.zip" 指的是一个针对Windows 32位系统(x86)的PHP 5.3.5版本,它由Visual C++ 6 (VC6) 编译器编译而成,并且带有线程安全支持(TS)。这个压缩包是该特定配置下的最后一个版本,对于...

    php-5.3.1-Win32-VC6-x86+apache2.2.25

    4. 解压PHP:将`php-5.3.1-Win32-VC6-x86.zip`解压,将php5apache2_2.dll等相关文件复制到Apache的modules目录。 5. 启动Apache:重启Apache服务,确保PHP模块已被成功加载。 6. 测试集成:创建一个简单的PHP文件...

    opencv-4.6.0-vc14-vc15.exe

    至于压缩包内的"opencv-4.6.0-vc14_vc15.exe"文件,它可能是一个自解压程序,运行后会自动将OpenCV库解压并安装到指定目录,同时可能也会进行一些必要的环境变量配置,以便于在Visual Studio中使用。安装完成后,...

Global site tag (gtag.js) - Google Analytics