【本文参考自网络,参考地址:https://blog.csdn.net/lsyyoyo/article/details/38726419】

1、在公共的头文件中添加一个宏定义: #define WM_TEST WM_USER+101 //用户消息 用来绑定PostMessage和自定义的消息响应函数

  //  这里101可以用其他数字替代,但是一般要大于100,如果小于100可能和系统函数冲突。

2、在子对话框中添加消息响应函数,这个网上资料很多,这里简单说一下:

在头文件中添加:afx_msg LRESULT OnTest(WPARAM wParam,LPARAM lParam);

在cpp文件中添加:ON_MESSAGE(WM_TEST,OnTest)

添加具体函数:

LRESULT CPara2::OnTest(WPARAM wParam,LPARAM lParam)
   {     MessageBox( "Hello World" );   }

3、在主对话框你需要响应的地方添加:

::PostMessage(para2.GetSafeHwnd(),WM_TEST,0,0);//para2是子对话框的类名,由于是不同窗口之间,所以获得句柄用GetSafeHwnd()函数

4、如果想通过PostMessage传递参数,可以使用wParam和lParam选项。

这种方法相对复杂,但是应用范围较广,可以学习一下。

下面对WPARAM和LPARAM参数之间的区别进行简单的解释。

WPARAM 和 LPARAM

  wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API中WndProc有两个参数:一个是WORD类型的16位整型变量;另一个是LONG类型的32位整型变量。

因此根据匈牙利命名法,16位的变量就被命名为wParam, 32位的变量就被命名为lParam。

  而到了Win32API中,原来的16位变量也被扩展为32位,因此此时wParam和lParam的大小完全相同。

  区别及习惯用法:

  MS在使用时两种参数分别代表不同的含义和内容,WPARAM常常代表一些控件的ID或者高位低位组合起来分别表示鼠标的位置,如果消息的发送者需要将某种结构的指针或者是某种类型的句柄时,习惯上用LPARAM来传递。除此之外,一般我们使用LPARAM传递地址,而WPARAM传递其他参数。

最新文章

  1. SpringMVC核心分发器DispatcherServlet分析[附带源码分析]
  2. SYSTick 定时器
  3. svn patch用法
  4. 在Ubuntu上安装JDK、Ant、Jmeter和Jenkins
  5. 1,SFDC 管理员篇 - 基本设置
  6. 极客DIY:如何构建一台属于自己的基站
  7. Cortex-M3 Context Switching
  8. VHD轻松实现双系统
  9. JAVA基础——内部类详解
  10. Maven常见错误以及解决方案【转载】
  11. 【easy】110. Balanced Binary Tree判断二叉树是否平衡
  12. Docker 部署Gitlab
  13. ssm后台开发及发布
  14. 在Spark上通过BulkLoad快速将海量数据导入到Hbase
  15. 兼容多浏览器的网页复制插件(ZeroClipboard)
  16. DOM操作案例之--全选与反选
  17. 团队作业 week9
  18. (CoreText框架)NSAttributedString 2
  19. VHDL语言实现的任意整数分频器
  20. TP框架中APP_SUB_DOMAIN_DEPLOY什么意思?

热门文章

  1. linux下串口调试工具
  2. PREV-2_蓝桥杯_打印十字图
  3. 如何查看java对象的大小
  4. MySQL数据库解决乱码 latin1 转 gbk
  5. optparse模块解析命令行参数的说明及优化
  6. PLSQL导出对象的表结构和表数据
  7. route
  8. geoserver 常见问题笔记
  9. spi and sensor
  10. 使用Keepalived实现linux高可用集群