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接收时,会响应两次,可以写个计数器,只响应第二次的即可。
本文介绍如何在DLL中发送自定义消息到主程序,并确保两者之间的WM_DATA值保持一致。文章详细解释了通过PostMessage函数通知主程序的方式,并讨论了使用消息与回调函数的区别。此外还提到了内存映射文件的使用场景。

1702

被折叠的 条评论
为什么被折叠?



