c++学习之路---------------自定义消息

本文介绍如何在DLL中发送自定义消息到主程序,并确保两者之间的WM_DATA值保持一致。文章详细解释了通过PostMessage函数通知主程序的方式,并讨论了使用消息与回调函数的区别。此外还提到了内存映射文件的使用场景。

1.现在。h文件中定义宏




2。



3



4



5

在需要发送消息的地方加上,这里是直接发送消息。



6 放入消息队列中



在dll中发送自定义消息

DLL部份
//先把需的数据写入内存映射文件
PostMessage(FindWindow(nil, '主窗口标题'), WM_DATA, 1, 1);//通知主程序有数据

注意的是:DLL和主程序中的WM_DATA值要一致,这个值可以自己定义,如const WM_DATA=WM_USER + 100等等

写入和读取内存映射文件代码就很长了,楼主可以参考相关资料.

总的思路是:通过发送消息给程序主程序,告诉主程序数据写到了内存映象文件.然后主程序读取内存映象文件中的数据,赋给相应的对象.

应该用DLL回调EXE的函数,建议不要用消息。


钩子 WH_GETMESSAGE 当调用GetMessage 或 PeekMessage时 起作用,
对于VC程序里面处理消息的函数 中有GetMessage 和PeekMessage两者,所以会调用两次
钩子函数,弹出两次框。 你试试当把WM_GETMESSAGE换成WH_CALLWNDPROC ,就根本不弹框。

总结:
根据以上知道,dll发送自定义消息,(1)DLL和主程序中的WM_DATA值要一致,这个值可以自己定义,如const WM_DATA=WM_USER + 100,可以用sendmessage或PostMessage向dialog发送消息
(2) dialog接收时,会响应两次,可以写个计数器,只响应第二次的即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值