Ultimate Grid 编译成X64位,有关OnCellTypeNotify收不到消息的问题

本文探讨了使用VC++2015编译UltimateGrid7.3为X64 DLL时遇到的问题,即OnCellTypeNotify在64位环境下无法接收消息。分析了该问题的原因,并提供了修改建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象:MFC下非常好用的开源界面Ultimate Grid 7.3

问题:1 用Vc++2015编译Ultimate Grid 7.3为X64 DLL;2 编译成32位时一切都没问题,但编译成X64位后,OnCellTypeNotify收不到消息。(通过其中的Demos下EdittingDemo做的实验)。

发现问题:

1. OnCellTypeNotify的定义,在ugceltyp.h文件中:

virtual int OnCellTypeNotify(long ID,int col,long row,long msg,LONG_PTR param);

2. 而在继承类中MyCUG定义:

virtual int OnCellTypeNotify(long ID,int col,long row,long msg, long param);

3. 系统在调用virtual函数时,因为定义的不同,没有调用到这个继承类的函数。

 

解决问题:将MyCUG中的定义改成与ugceltyp.h文件定义一致即可

 

分析:

1. 在编译成32时,以上不同的定义没问题;但编译成64位系统以上定义就不成功,晕;

2. 我的分析原因,32位程序编译时,LONG占用4个字节;同时LONG_PTR也占用4个字节,定义一致;而在R64程序编译时,LONG_PTR可能占用8个字节,定义不同了。(这个原因,只是我个人瞎分析。看大家分析下是什么原因)。

 

gllm126@163.com

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值