解决C# X64应用程序中读取WParam溢出的问题
时间:2022-01-22 17:41:03
在X86的环境下,
var wParam = (int)msg.WParam;
工作得很好。
在X64的环境下,
快速滚动滚轮会出现msg.WParam 转换为int的时候溢出,(WParam=4263510016)。
信息为:
未处理System.OverflowException
Message=算术运算导致溢出。
Source=mscorlib
StackTrace:
在 System.IntPtr.op_Explicit(IntPtr value)
在 TIM.MouseWheelHandler.MouseWheelMessageFilter.PreFilterMessage(Message& m) 位置。。。
查证WParam是IntPtr,MSDN说
IntPtr 类型被设计成整数,其大小适用于特定平台。即是说,此类型的实例在 32 位硬件和操作系统中将是 32 位,在 64 位硬件和操作系统上将是 64 位。
所以,上面的代码应该为:
var wParam = (IntPtr.Size == 8) ? (int)((long)msg.WParam << 32 >> 32) : (int)msg.WParam;
测试通过。
标签:X64,WParam,溢出
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Jenkins自动构建部署项目到远程服务器上的方法步骤
2023-11-25 00:21:40
![](https://img.aspxhome.com/file/2023/8/85948_0s.png)
C#中在WebClient中使用post发送数据实现方法
2023-05-01 00:03:54
java实现登录验证码功能
2021-06-08 19:34:18
![](https://img.aspxhome.com/file/2023/3/70953_0s.jpg)
java微信开发API第一步 服务器接入
2023-08-24 11:18:26
Java 处理超大数类型之BigInteger案例详解
2021-06-20 15:36:38
Spring深入刨析声明式事务注解的源码
2023-10-23 09:41:48
![](https://img.aspxhome.com/file/2023/6/61026_0s.png)
springboot跨域CORS处理代码解析
2022-07-29 21:12:20
![](https://img.aspxhome.com/file/2023/4/69284_0s.png)
Java接口的简单定义与实现方法示例
2022-11-22 05:04:43
C#语言中条件与&&与条件或||的区别
2022-10-06 22:51:55
Spring Boot Redis 集成配置详解
2022-12-05 20:57:59
浅谈JSON的数据交换、缓存问题和同步问题
2021-08-08 09:31:25
基于<aop:aspect>与<aop:advisor>的区别
2023-01-22 21:53:35
简单了解Spring中常用工具类
2021-09-24 10:44:28
java之使用多线程代替for循环(解决主线程提前结束问题)
2021-11-21 01:23:55
Android仿微信照片选择器实现预览查看图片
2022-02-03 12:25:51
![](https://img.aspxhome.com/file/2023/1/100621_0s.png)
使用ehcache三步搞定springboot缓存的方法示例
2021-06-25 04:44:12
详解Java ES多节点任务的高效分发与收集实现
2021-08-03 13:59:02
C#实现UI控件输出日志的方法详解
2021-10-07 02:45:41
![](https://img.aspxhome.com/file/2023/6/80036_0s.png)
Android 中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法
2023-02-26 21:34:17
Django之多对多查询与操作方法详解
2021-08-03 03:21:58
![](https://img.aspxhome.com/file/2023/0/96060_0s.jpg)