GET_WHEEL_DELTA_WPARAM macro in C#
本文关键字:in macro DELTA WHEEL GET WPARAM | 更新日期: 2023-09-27 18:24:51
如何在C#中使用GET_WEEL_DELTA_WARM宏?
为了最大限度地清晰起见,我定义了一组函数,如下所示:
internal static class NativeMethods
{
internal static ushort HIWORD(IntPtr dwValue)
{
return (ushort)((((long)dwValue) >> 0x10) & 0xffff);
}
internal static ushort HIWORD(uint dwValue)
{
return (ushort)(dwValue >> 0x10);
}
internal static int GET_WHEEL_DELTA_WPARAM(IntPtr wParam)
{
return (short)HIWORD(wParam);
}
internal static int GET_WHEEL_DELTA_WPARAM(uint wParam)
{
return (short)HIWORD(wParam);
}
}
然后使用这样的函数,其中wParam
是处理Win32 WM_MOUSEWHEEL
或WM_MOUSEHWHEEL
消息时得到的WPARAM
参数:
int zDelta = NativeMethods.GET_WHEEL_DELTA_WPARAM(wParam);
您可能需要抑制溢出检查才能正常工作。为此,请更改项目设置,或将相关转换函数封装在unchecked
块中。
高位字,带符号:
((short)(wParam>>16))
有MouseWheelEventArgs。Delta属性:
获取一个值,该值指示鼠标滚轮的更改量。
private void MouseWheelHandler(object sender, MouseWheelEventArgs e)
{
if (e.Delta > 0)
{
// Do one thing
}
else if (e.Delta < 0)
{
// Do the other thing
}
}