MFC对消息参数WPARAM wParam取低、高16位的整数

本文深入探讨了Windows编程中的消息处理机制,详细解析了WPARAM、LPARAM、LRESULT等关键数据类型的定义与使用,以及如何通过MAKEWORD、MAKELONG等宏来组合和拆分高低字节的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* Types use for passing & returning polymorphic values */
typedef UINT_PTR            WPARAM;
typedef LONG_PTR            LPARAM;
typedef LONG_PTR            LRESULT;
//指针就是一个大整数 整数有short 16位2字节整数 有int、long 32位4字节整数 
typedef long LONG_PTR; //32位4字节整数 指针就是个大整数
typedef unsigned int UINT_PTR; //32位4字节无符号整数 指针就是个大整数

#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)) //将l的低16位与0xffff 2个字节即 11111111取与 相当于取l的低16位 在窗口类CWnd::WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)中这低16位表示高16位消息ID的细分消息ID,如高16位WM_COMMAND的IDM_ABOUT、IDM_EXIT
#define HIWORD(l)           ((WORD)((((DWORD_PTR)(l)) >> 16) & 0xffff)) //将l向右移16位 即将高16位移至低16位(高16位补零)与oxffff 2个字节即 11111111取与 相当于取l的高16位 
#define LOBYTE(w)           ((BYTE)(((DWORD_PTR)(w)) & 0xff)) //将w的低8位与0xff 一个字节即11111111取与 相当于取w的低8位
#define HIBYTE(w)           ((BYTE)((((DWORD_PTR)(w)) >> 8) & 0xff)) //将w向右移8位 即将倒数第二个8位与0xff 一个字节即11111111取与 相当于取倒数第二个8位

LOWORD(l)在CWnd::WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)中的用法:
int wmld = LOWORD(wParam); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值