源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

解决C# X64应用程序中读取WParam溢出的问题

  • 时间:2021-01-02 03:43 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:解决C# X64应用程序中读取WParam溢出的问题
[b]在X86的环境下,[/b] var wParam = (int)msg.WParam; 工作得很好。 [b]在X64的环境下,[/b] 快速滚动滚轮会出现msg.WParam 转换为int的时候溢出,(WParam=4263510016)。 信息为: 未处理System.OverflowException   Message=算术运算导致溢出。   Source=mscorlib   StackTrace:        在 System.IntPtr.op_Explicit(IntPtr value)        在 TIM.MouseWheelHandler.MouseWheelMessageFilter.PreFilterMessage(Message& m) 位置。。。 [b]查证WParam是IntPtr,MSDN说[/b] IntPtr 类型被设计成整数,其大小适用于特定平台。即是说,此类型的实例在 32 位硬件和操作系统中将是 32 位,在 64 位硬件和操作系统上将是 64 位。 [b]所以,上面的代码应该为:[/b] var wParam = (IntPtr.Size == 8) ? (int)((long)msg.WParam << 32 >> 32) : (int)msg.WParam; 测试通过。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部