using System;
namespace Microsoft.Win32
{
///
/// Util
///
public static partial class Util
{
///
/// 获取有符号低16位整数
///
/// 句柄
/// 有符号低16位整数
public static int GET_X_LPARAM(IntPtr lParam)
{
return LOWORD(lParam);
}
///
/// 获取有符号高十六位整数
///
/// 句柄
/// 有符号高十六位整数
public static int GET_Y_LPARAM(IntPtr lParam)
{
return HIWORD(lParam);
}
///
/// 获取无符号高8位整数
///
/// 无符号16位整数
/// 无符号高8位整数
public static byte HIBYTE(ushort wValue)
{
return (byte)((wValue >> 0x8) & 0xff);
}
///
/// 获取无符号低8位整数
///
/// 无符号16位整数
/// 无符号低8位整数
public static byte LOBYTE(ushort wValue)
{
return (byte)(wValue & 0xff);
}
///
/// 获取无符号高16位整数
///
/// 无符号32位整数
/// 无符号高16位整数
public static ushort HIWORD(uint dwValue)
{
return (ushort)((dwValue >> 0x10) & 0xffff);
}
///
/// 获取无符号低16位整数
///
/// 无符号32位整数
/// 无符号低16位整数
public static ushort LOWORD(uint dwValue)
{
return (ushort)(dwValue & 0xffff);
}
///
/// 将两个无符号8位整数合并为一个无符号16位整数
///
/// 无符号低8位整数
/// 无符号高8位整数
/// 无符号16位整数
public static ushort MAKEWORD(byte bLow, byte bHigh)
{
return (ushort)((((ushort)bHigh) << 0x8) | ((ushort)(bLow & 0xff)));
}
///
/// 将两个无符号16位整数合并为一个无符号32位整数
///
/// 无符号低16位整数
/// 无符号高16位整数
/// 无符号32位整数
public static uint MAKELONG(ushort wLow, ushort wHigh)
{
return ((((uint)wHigh) << 0x10) | ((uint)(wLow & 0xffff)));
}
///
/// 将两个无符号16位整数合并为一个有符号32位整数
///
/// 无符号低16位整数
/// 无符号高16位整数
/// 有符号32位整数
public static int MAKELPARAM(ushort wLow, ushort wHigh)
{
return (int)MAKELONG(wLow, wHigh);
}
///
/// 将两个无符号16位整数合并为一个有符号32位整数
///
/// 无符号低16位整数
/// 无符号高16位整数
/// 有符号32位整数
public static int MAKEWPARAM(ushort wLow, ushort wHigh)
{
return (int)MAKELONG(wLow, wHigh);
}
///
/// 将两个无符号16位整数合并为一个有符号句柄
///
/// 无符号低16位整数
/// 无符号高16位整数
/// 有符号句柄
public static IntPtr MAKELRESULT(ushort wLow, ushort wHigh)
{
return (IntPtr)MAKELONG(wLow, wHigh);
}
///
/// 获取无符号高16位整数
///
/// 32位有符号整数
/// 无符号高16位整数
public static int HIWORD(int n)
{
return ((n >> 0x10) & 0xffff);
}
///
/// 获取无符号高16位整数
///
/// 句柄
/// 无符号高16位整数
public static int HIWORD(IntPtr n)
{
return HIWORD((int)((long)n));
}
///
/// 获取无符号低16位整数
///
/// 32位有符号整数
/// 无符号低16位整数
public static int LOWORD(int n)
{
return (n & 0xffff);
}
///
/// 获取无符号低16位整数
///
/// 句柄
/// 无符号低16位整数
public static int LOWORD(IntPtr n)
{
return LOWORD((int)((long)n));
}
///
/// 获取有符号高16位整数
///
/// 32位有符号整数
/// 有符号高16位整数
public static int SignedHIWORD(int n)
{
return (short)((n >> 0x10) & 0xffff);
}
///
/// 获取有符号高16位整数
///
/// 句柄
/// 有符号高16位整数
public static int SignedHIWORD(IntPtr n)
{
return SignedHIWORD((int)((long)n));
}
///
/// 获取有符号低16位整数
///
/// 32位有符号整数
/// 有符号低16位整数
public static int SignedLOWORD(int n)
{
return (short)(n & 0xffff);
}
///
/// 获取有符号低16位整数
///
/// 句柄
/// 有符号低16位整数
public static int SignedLOWORD(IntPtr n)
{
return SignedLOWORD((int)((long)n));
}
///
/// 将两个16位整数合并为一个32位整数
///
/// 低16位整数
/// 高16为整数
/// 32位整数
public static int MAKELONG(int low, int high)
{
return ((high << 0x10) | (low & 0xffff));
}
///
/// 将两个16位整数合并为句柄
///
/// 低16位整数
/// 高16为整数
/// LParam
public static IntPtr MAKELPARAM(int low, int high)
{
return (IntPtr)((high << 0x10) | (low & 0xffff));
}
}
}