C++宏定义
#define MAKEWORD(a, b) ((WORD)(((BYTE)(((DWORD_PTR)(a)) & 0xff)) | ((WORD)((BYTE)(((DWORD_PTR)(b)) & 0xff))) << 8))
#define MAKELONG(a, b) ((LONG)(((WORD)(((DWORD_PTR)(a)) & 0xffff)) | ((DWORD)((WORD)(((DWORD_PTR)(b)) & 0xffff))) << 16))
#define LOWORD(l) ((WORD)(((DWORD_PTR)(l)) & 0xffff))
#define HIWORD(l) ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff))
#define LOBYTE(w) ((BYTE)(((DWORD_PTR)(w)) & 0xff))
#define HIBYTE(w) ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff))
#define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam))
#define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam))
#define GET_NCHITTEST_WPARAM(wParam) ((short)LOWORD(wParam))
#define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam))
C#中的泛型
namespace System
{
public static class MinWinDef
{
internal static Func<object, object, object> MAKEWORD = (a, b) => ((ushort)(((byte)(((ulong)(a)) & 0xff)) | ((ushort)((byte)(((ulong)(b)) & 0xff))) << 8));
internal static Func<object, object, object> MAKELONG = (a, b) => ((ulong)(((ushort)(((ulong)(a)) & 0xff)) | ((ushort)((byte)(((ulong)(b)) & 0xff))) << 8));
internal static Func<object, object> LOWORD = l => ((ushort)(((ulong)(l)) & 0xffff));
internal static Func<object, object> HIWORD = (l) => ((ushort)((((ulong)(l)) >> 16) & 0xffff));
internal static Func<object, object> LOBYTE = (w) => ((byte)(((ulong)(w)) & 0xff));
internal static Func<object, object> HIBYTE = (w) => ((byte)((((ulong)(w)) >> 8) & 0xff));
internal static Func<object, object> GET_WHEEL_DELTA_WPARAM = (wParam) => ((short)HIWORD(wParam));
internal static Func<object, object> GET_KEYSTATE_WPARAM = (wParam) => (LOWORD(wParam));
internal static Func<object, object> GET_NCHITTEST_WPARAM = (wParam) => ((short)LOWORD(wParam));
internal static Func<object, object> GET_XBUTTON_WPARAM = (wParam) => (HIWORD(wParam));
}
}