国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

解決C# X64應用程序中讀取WParam溢出的問題

2020-01-24 03:28:57
字體:
來源:轉載
供稿:網友

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

測試通過。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东辽县| 滁州市| 渝中区| 苍山县| 楚雄市| 子长县| 张家川| 丰都县| 巩义市| 罗甸县| 太谷县| 紫金县| 绥德县| 锦屏县| 鹤庆县| 桂东县| 上杭县| 衡阳市| 常山县| 特克斯县| 利辛县| 姚安县| 丽水市| 阿拉善右旗| 台前县| 井冈山市| 城市| 来宾市| 绿春县| 阿瓦提县| 鹰潭市| 勃利县| 灌云县| 梧州市| 尖扎县| 苍梧县| 电白县| 武城县| 湘乡市| 佛冈县| 从江县|