第一:WPARAM 和 LPARAM 是什么东西

typedef uint wparam;//就是无符号整形
         typedef long lparam;//就是长整形

typedef   struct   tagMSG

{           //   msg      
                                  HWND   hwnd;       //窗口句柄  
                                  UINT   message;       //消息常量标识符  
                                  WPARAM   wParam;     //32位消息的特定附加信息,具体表示什么处决于message  
                                  LPARAM   lParam;     //32位消息的特定附加信息,具体表示什么处决于message  
                                  DWORD   time;       //消息创建时的时间  
                                  POINT   pt;               //消息创建时的鼠标位置  
                              }   MSG;  
        hwnd   接收消息的32位窗口句柄。窗口可以是任何类型的屏幕对象,  
        因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑框等)。  
        message   用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。  
        wParam   通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。通常用于存储小段信息,如标志  
        lParam   通常是一个指向内存中数据的指针,通常用于存储消息所需的对象。 
        由于wParam,lParam和指针都是32位的,需要时可以强制类型转换。具体表示什么,与message相关,

他们是事先定义好的。  
        如果自定义消息:#define   WM_MYMESSAGE   WM_USER+100,需确定wParam,lParam的意义  
        (假设wParam=0时发送数据,wParam=1时接收数据,lParam为CMyClass*   指针,指向一个CMyClass对象,

准备要发送的数据或接收数据  
        发送WM_MYMESSAGE时   SendMessage(hwnd,WM_MYMESSAGE,0,pMyClassObject)  
        接收消息的窗口,接收WM_MYMESSAGE中(CMyClass*)lParam参数即pMyClassObject传过来的数据

第二:WPARAM 和 LPARAM 所代表的意义

是两个消息参数,相当于长整数。例如一个鼠标左键按下的消息WM_LBUTTONDOW,那么左键按下时,鼠标位置在那里呢?

就需要用LPARAM参数来传递鼠标位置信息。

如://鼠标坐标
         point.x=LOWORD(pMsg->lParam);//LOWORD取低位 后面四位 相对于客户窗体左上角的X偏移值
         point.y=HIWORD(pMsg->lParam);//HIWORDs取高位 前面四位 相对于客户窗体左上角的Y偏移值

还有其他的信息在这个时候也要知道,就是Ctrl键是否也按下了等信息。

查看一下MSDN关于WM_LBUTTONDOW的帮助,你可以明白很多。

懒人的问题真多,对于自己定义的消息,你想在WPARAM   和   LPARAM里传什么参数,接受到的就是什么参数,比如说:
         char   str[]= "abcde ";
         myWnd.SendMessage(   WM_MYMESSAGE,   (LPARAM)str,   0   );
         这样接收到的wParam就可以当字符串处理。对于Windows预定义的消息,各自的这两个参数包含的信息各不相同。

param是parameter(参数)的意思
         wParam和lParam都作为函数的参数

WPARAM:32位(双字节)的消息参数。值的格式和意思取决于主要的事件消息类型。在不同的情况下,WPARAM变元可能传输一个坐标点对,使用低字值标识次要的消息类型,提供某些其他的数据类型,或被完全忽略。在很多情况下,WPARAM值将被看成两个独立的字值,分别具有不同的功能。

LPARAM:32位(长整型)的消息参数。这个参数的值和意思取决于主事件消息类型。在不同的情况下,LPARAM变元可能提供一个字符串或记录结构的指针,分解为一组字、字节或标志值,或者往往完全没有用。

作为参数,在32为系统上它们的类型就是unsigned int,根据情况你可以放不同的数据、指针,只要是4字节的就行

十三:谈谈MSG中的 WPARAM 和 LPARAM相关推荐

  1. 谈谈MSG中的 WPARAM 和 LPARAM

    http://blog.csdn.net/ljd_1986413/article/details/6258604原文地址 第一:WPARAM 和 LPARAM 是什么东西 typedef uint w ...

  2. 消息中的wParam和lParam

    具体是这么说: "在Win 3.x中,WPARAM是16位的,而LPARAM是32位的,两者有明显的区别.因为地址通常是32位的,所以LPARAM 被用来传递地址,这个习惯在Win32 AP ...

  3. WPARAM 与 LPARAM

    WPARAM LPARAM2008-09-03 17:25根据字面意思理解: WPARAM就是DWORD_PARAMETER(双字节参数)的缩写. LPARAM就是LONG_PARAMETER(长整型 ...

  4. WPARAM 与 LPARAM 参数的解析 [C#、WinAPI]

    先略谈一下什么是WPARAM 与 LPARAM 参数: 在我们的程序和WindowAPI打交道时,特别是在处理鼠标键盘消息时,WPARAM 与 LPARAM 参数会经常出现.在Win32 API中,W ...

  5. WPARAM 与 LPARAM

    WPARAM LPARAM2008-09-03 17:25根据字面意思理解: WPARAM就是DWORD_PARAMETER(双字节参数)的缩写. LPARAM就是LONG_PARAMETER(长整型 ...

  6. WPARAM与LPARAM 之区别

    WPARAM与LPARAM 之区别     在Win 3.x中,WPARAM是16位的,而LPARAM是32位的,两者有明显的区别.因为地址通常是32位的,所以LPARAM被用来传递地址,这个习惯在W ...

  7. wParam与 lParam

    根据字面意思理解: WPARAM就是DWORD_PARAMETER(双字节参数)的缩写. LPARAM就是LONG_PARAMETER(长整型参数)的缩写. WPARAM:16位(双字节(在16位系统 ...

  8. (转载)WPARAM与LPARAM

    根据字面意思理解: WPARAM就是DWORD_PARAMETER(双字节参数)的缩写. LPARAM就是LONG_PARAMETER(长整型参数)的缩写. WPARAM:16位(双字节(在16位系统 ...

  9. WPARAM和LPARAM的含义

    lParam 和 wParam 是宏定义,一般在消息函数中带这两个类型的参数,通常用来存储窗口消息的参数. LRESULT CALLBACK WindowProc(HWND hwnd, UINT uM ...

最新文章

  1. 一切为了AI!黄仁勋GTC大会发布全新DPU处理器,计算吞吐量三年跨越1000倍
  2. linux 核显驱动程序,支持下代核显 Intel放出Linux图形驱动
  3. python部落稿酬_Python之父考虑重构Python解释器
  4. Caffeine 和 Redis 居然可以这么搭,想不到吧!
  5. matlab啁啾信号,啁啾信号chirp(扫频余弦信号)
  6. Windows7 的激活命令小结
  7. 切换不了摄像头 高拍仪_高拍仪常见问题解答
  8. 微波雷达感应模块技术应用,多普勒雷达,人体存在感应模组
  9. 键盘选中一行或多行的快捷键
  10. AD158A4语音芯片介绍
  11. cocos 躲避球游戏(1) --创建项目和场景切换
  12. AI工具是帮手还是助手:
  13. python爬虫论文参考文献格式_Python爬虫进阶必备 | XX文学加密分析实例
  14. H3C 二层链路聚合
  15. java hashmap api_JAVA基础学习-集合三-Map、HashMap,TreeMap与常用API
  16. 国内做校园信息化的龙头企业公司有哪些?
  17. Sql Server访问excel的数据
  18. 吉首大学计算机专业宿舍,吉首大学宿舍条件,宿舍环境图片(10篇)
  19. SDL编程入门(19)游戏手柄和操纵杆
  20. linux下mysql 添加用户并分配全部权限

热门文章

  1. CentOS 安装 SS5 配置启动
  2. 微信小程序createSelectorQuery获取偶尔为null
  3. 虚拟机的网络连接类型 - 网桥Bridged, NAT, Host-only
  4. 神经网络综合知识小杂烩汇总
  5. 我用Python爬取了“b站弹幕大军,告诉你什么才是真正的“雨女无瓜”
  6. 四年来的面试经历(代发)
  7. GitHub上最牛逼的10个Java项目,号称Star收割机,Dubbo只能排 12
  8. 交流电机驱动器中的隔离电压感应
  9. idea中创建jsp项目
  10. 重写CompareTo