【发布时间】:2011-03-08 17:52:53
【问题描述】:
如何创建将任何数据传递给不同程序的自定义 Windows 消息。
我在 GUI 程序和服务器程序之间进行消息传递。我的背景是 *nix 编程,我有点迷失在 windows 世界中。
目前这两个程序都是由 Visual Studio 的向导通过选择“MFC 窗口应用程序”创建的。现在我想要一种优雅的方式在程序之间进行通信。 Google 给了我 Cwnd->sendmessage + 注册您自己的消息等。但是,我不能将 char 指针传递给具有标准自定义消息的不同程序(好吧,我可以,但内存区域错误,并且程序段错误)。所以,谷歌再次给我发送消息(WM_COPYDATA,hparam,lparam)这是编组的。在谷歌搜索编组时......我撞到了一堵墙。
我假设编组的消息(或它们的数据)被传递到一个共享内存区域,该区域只能由发送方和接收方程序读取(对吗?)。通过创建一个自定义消息,该消息将编组数据的指针作为 lparam,我可以将任何对象传递给另一个程序(对吗?)。我如何在实践中做到这一点?我尝试了以下方法:
pWin->SendMessage(pTargetWin, WM_CUSTOM_MESSAGE, pSourceWin, pData);
如果 pData 是整数,上述方法有效。如果 pData 是指向对象的指针,则由于缺少编组,我无法使用该对象。我知道我可以对 pData 进行包装 COPYDATASTRUCT 包装并更改为 WM_COPYDATA。我应该这样做吗?
br, 朱哈
【问题讨论】:
标签: c++ windows marshalling messaging