解决C# X64应用程序中读取WParam溢出的问题
发布时间:2022-01-22 17:41:03
标签:X64,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;
测试通过。


猜你喜欢
- 带参数的try(){}语法含义带资源的try语句(try-with-resource)最简形式为try(Resource res = xxx
- 目录概览问题一原因解决办法问题二原因解决办法概览在当下几乎所有的公司都采用了前后端分离的开发模式,Swagger作为了在API在线文档工具,
- 1. 遍历map方法通过 keySet() 方法获取全部的key值;通过 values() 方法获取全部的value值;通过遍历key值获取
- 背景出现了一次生产事故,事情是这样的,我们有一个项目,Java访问数据库的框架使用的是MyBatis。然后一个业务员在系统中查询了一个订单,
- 最近滑动验证码在很多网站逐步流行起来,一方面对用户体验来说,比较新颖,操作简单,另一方面相对图形验证码来说,安全性并没有很大的降低。当然到目
- 当需要将一个对象输出到显示器时,通常要调用他的toString()方法,将对象的内容转换为字符串.java中的所有类默认都有一个toStri
- 一、项目简述功能: 主页显示商品; 所有二手书商品展示,可进行商品搜索; 点击商品进入商品详情页,具有立即购买和加入购物车功能,可增减购买商
- 本文实例为大家分享了C#实现猜数字小游戏的具体代码,供大家参考,具体内容如下效果如图:代码:using System;using Syste
- java中删除 数组中的指定元素要如何来实现呢,如果各位对于这个算法不是很清楚可以和小编一起来看一篇关于java中删除 数组中的指定元素的例
- Android CalendarView,DatePicker,TimePicker,以及NumberPicker的使用简单复习
- 我实现的思路:1.继承ImageView类2.重写onTouchEvent方法,在ACTION_MOVE(即移动时),记录下所经过的点坐标,
- 本文实例讲述了Java实现的日历功能。分享给大家供大家参考,具体如下:应用名称:Java日历用到的知识:Java GUI编程,日期操作开发环
- 本文实例讲述了Android实现整理PackageManager获取所有安装程序信息的方法。分享给大家供大家参考,具体如下:List<
- HTML是WEB的核心,互联网中你看到的所有页面都是HTML,不管它们是由JavaScript,JSP,PHP,ASP或者是别的什么WEB技
- 本文实例讲述了Java实现的RSA加密解密算法。分享给大家供大家参考,具体如下:import java.awt.AlphaComposite
- 本文实例为大家分享了Android RecyclerView使用的具体代码,供大家参考,具体内容如下package com.itheima7
- session失效时间 在Tomcat上,session的默认有效时间是30分钟。也可以通过配置文件修改session的有效时间。
- 前言当线程池的线程阻塞时,线程池会创建额外的线程,而创建、销毁和调度线程所需要相当昂贵的内存资源,另外,很多的开发人员看见自己程序的线程没有
- 目录一、首先导入生成二维码和微信支付环境二、在application.yml文件配置微信所有需的基本配置1.导入2.创建MyWXPayCon
- 前言大家都知道,不少仪器工作站可xls文件和2007+的xl以将数据导出为Excel文件,包括97-2003版本的sx文件。采集Excel文