博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC6.0编写层析软件移植到VS2003心得
阅读量:3975 次
发布时间:2019-05-24

本文共 1567 字,大约阅读时间需要 5 分钟。

今天下午突然想到要将原来在6.0上编的程序移植到2003上,开始始终跳出下面两行错误:

 1。CJPagerCtrl.cpp(59) : error C2440: 'static_cast' : cannot convert from 'BOOL (__thiscall CCJPagerCtrl::* )(NMPGSCROLL *,LRESULT *)' to 'BOOL (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *)'

        None of the functions with this name in scope match the target type
2。CJPagerCtrl.cpp(60) : error C2440: 'static_cast' : cannot convert from 'BOOL (__thiscall CCJPagerCtrl::* )(NMPGCALCSIZE *,LRESULT *)' to 'BOOL (__thiscall CCmdTarget::* )(NMHDR *,LRESULT *)'
        None of the functions with this name in scope match the target type

    花了一下午的时间,终于弄明白了,这两个函数是在这个消息宏中发生的错误:

         ON_NOTIFY_REFLECT_EX(PGN_SCROLL, OnPagerScroll)

        ON_NOTIFY_REFLECT_EX(PGN_CALCSIZE, OnPagerCalcSize)

     消息函数原型:

      BOOL CCJPagerCtrl::OnPagerCalcSize(NMPGCALCSIZE* pNMPGCalcSize, LRESULT* pResult)

      BOOL CCJPagerCtrl::OnPagerScroll(NMPGSCROLL* pNMPGScroll, LRESULT* pResult)

   主要是在VS2003中,这个消息中,消息函数的参数已经发生了变化,不再是MPGSCROOLL*了,而是NMHDR*了。但是这个改变了之后,函数中的变量的值怎么取得呢,原来NMPGCALCSIZE*是一个结构体指针,该结构体的第一个变量的类型又是NMHDR类型的结构体,因此,将NMHDR指针变量转化为MPGSCROOLL类型的指针就可以了。替换原来消息函数中NMPGCALCSIZE的指针变量。

      ON_NOTIFY_REFLECT_EX实际上是一个通知消息反射宏,利用这个宏,可以是窗口控件发给父窗口的通知消息反射回来给控件自己处理。如一个空间想改变自己的颜色,通常是给其父窗口发送消息,有父窗口处理消息改变控件的颜色,但是利用消息反射机制,可以实现控件自己改变自己的颜色。

Map entry Function prototype
ON_NOTIFY_REFLECT_EX( wNotifyCode, memberFxn )                afx_msg BOOL memberFxn ( NMHDR * pNotifyStruct, LRESULT* result );

ON_CONTROL_REFLECT_EX( wNotifyCode, memberFxn )

这是一个表格,前面列是消息宏的定义,后面一列是消息函数的返回值类型和参数。从上面可以看到已经从6.0的NMPGCALCSIZE*或NMPGSCROLL*变为了 NMHDR *了。因此在函数中改过来就可以了。

             

 

 

转自:http://wangrenf.blog.163.com/blog/static/17612237200711169466972/

转载地址:http://nneki.baihongyu.com/

你可能感兴趣的文章
SQL - SQL Server中如何取年、月、日 -DATEPART函数
查看>>
SQL - SQL Server 一列或多列重复数据的查询,删除
查看>>
NET - .NET Core WebAPI + Vue + Axios 导出Excel / CSV
查看>>
NET - NET Core quartz.net 时间表达式----- Cron表达式详解
查看>>
NET - .NET Core 之 Abp Audit-Logging
查看>>
NET - .NET Core 之 Abp 整合 Quartz
查看>>
android 各式各样progress 进度条大全
查看>>
开发Google眼镜的app
查看>>
Android base-adapter-helper 源码分析与扩展
查看>>
Android 4.4从图库选择图片,获取图片路径并裁剪
查看>>
Android Fragment 你应该知道的一切
查看>>
使用AudioManager调节播放器音量的开发实例
查看>>
安卓开发者必备的42个链接
查看>>
Eclipse下Ant自动打包,混淆和签名
查看>>
linux环境下编译不成功
查看>>
Android WebView Long Press长按保存图片到手机
查看>>
BaseAnimation是基于开源的APP,致力于收集各种动画效果(最新版本1.3)
查看>>
TextView显示html图片点击图片放大等操作
查看>>
【Android】自定义控件让TextView的drawableLeft与文本一起居中显示
查看>>
Android Fragment getActivity返回null解决
查看>>