解决C# X64应用程序中读取WParam溢出的问题
在X86的环境下, var wParam = (int)msg.WParam; 工作得很好。 在X64的环境下, 快速滚动滚轮会出现msg.WParam 转换为int的时候溢出,(WParam=4263510016)。 信息为: 未处理System.OverflowException 查证WParam是IntPtr,MSDN说 IntPtr 类型被设计成整数,其大小适用于特定平台。即是说,此类型的实例在 32 位硬件和操作系统中将是 32 位,在 64 位硬件和操作系统上将是 64 位。 所以,上面的代码应该为: var wParam = (IntPtr.Size == 8) ? (int)((long)msg.WParam << 32 >> 32) : (int)msg.WParam; 测试通过。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |