手机
当前位置:查字典教程网 >编程开发 >C#教程 >解决C# X64应用程序中读取WParam溢出的问题
解决C# X64应用程序中读取WParam溢出的问题
摘要:在X86的环境下,varwParam=(int)msg.WParam;工作得很好。在X64的环境下,快速滚动滚轮会出现msg.WParam转...

在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;

测试通过。

【解决C# X64应用程序中读取WParam溢出的问题】相关文章:

C#中读写INI文件的方法例子

C# 图片剪切与缩小的实例

关于C#.net winform程序验证moss的集成身份认证实例

解决C#全屏幕截图的实现方法

基于一个应用程序多线程误用的分析详解

C#三种判断数据库中取出的字段值是否为空(NULL) 的方法

深入理解C#序列化与反序列化的详解

c# 引用类型构造器

C#访问应用程序配置文件的方法

C#用Activex实现Web客户端读取RFID功能的代码

精品推荐
分类导航