解密那场不存在的联想5g投票事件_解决X64应用程序中读取WParam溢出的问题

2009-09-17 论文写作 阅读:

C#应用程序是AnyCPU的,在一段处理鼠标滚轮WM_MOUSEWHEEL的代码里碰到溢出的问题OverflowException。

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

测试通过。

解密那场不存在的联想5g投票事件_解决X64应用程序中读取WParam溢出的问题

http://m.quanqiunao.cn/gongwenbangong/14986/

推荐访问:解股 解酒的方法

论文写作推荐文章

推荐内容

上一篇:【cvt是什么意思】CVT电子集团网上笔试部分试题答案 下一篇:京东商城官网|京东商城称原域名不方便记忆、启用新域名jd.com