如何在DLL之间发送消息

如何在DLL之间发送消息,dll,messaging,Dll,Messaging,我正在创建具有以下特征的应用程序: 一种基于对话框的GUI,使用dll的n个实例(我们称之为mainLib) mainLibdll使用另一个dll(我们称之为commManager)来管理与另一个应用程序的TCP通信 我的问题是,如何让commManager通知mainLib它收到的某些消息 我想类似于PostThreadMessage()的东西可能是解决方案,但是如何解决呢 我是否在dll中实现它?据推测,commManager在它自己的线程上运行。mainLib需要创建一个消息队列,如下

我正在创建具有以下特征的应用程序:

  • 一种基于对话框的GUI,使用dll的n个实例(我们称之为
    mainLib
  • mainLib
    dll使用另一个dll(我们称之为
    commManager
    )来管理与另一个应用程序的TCP通信
我的问题是,如何让
commManager
通知
mainLib
它收到的某些消息

我想类似于
PostThreadMessage()
的东西可能是解决方案,但是如何解决呢
我是否在dll中实现它?

据推测,commManager在它自己的线程上运行。mainLib需要创建一个消息队列,如下所述。当mainLib创建commManager时,它必须将其线程id传递给它


如果您想要阻塞,另一个选项是使用回调。让mainLib向commManager传递一个函数指针。

PeekMessage函数不是要阻止dll执行吗?实际上mainLib和commManager都在线程中运行。。。mainLib一直在进行计算,commManager传递控制消息,所以我不想阻止执行。。。谢谢你的帮助!文章的第2行:“它在不等待线程处理消息的情况下返回。”这在PostThreadMessage中。我看到了。我的问题是接收消息…mainLib可以调用PeekMessage,这是非阻塞的,以查看是否有消息。或者,它可以调用GetMessage,它将阻塞该消息,直到消息可用为止。