回 帖 发 新 帖 刷新版面

主题:【求助】vc调用dll的问题

大家好,小弟是vc的菜鸟一名,最近调用dll遇到的无法逾越的障碍,各位大侠一定要拉小弟一把啊。

dll是不能动的,没有源代码,返回是消息触发的,
主程序中用,调用后触发了AAA方法,可以得到dll的消息内容。这都没问题
BEGIN_MESSAGE_MAP(CSCDemoDlg, CDialog)
    ON_REGISTERED_MESSAGE(replyMsgId, AAA)
END_MESSAGE_MAP()

问题就在于,我的主程序方法A()中调用dll,自动触发了,却到了AAA方法返回,我想还是用A()返回值得到,有什么办法呢?

[em10][em10][em10][em10][em10][em10][em10][em10][em10]

回复列表 (共1个回复)

沙发

没听太懂你的意思啊,再具体讲下,贴贴相关代码

当你在 A 方法中调用 DLL 的函数时,进入到 DLL 函数内部,当 DLL 内部调用 PostMessage 或 SendMessage 时,你的 AAA 方法会被调用。如果 DLL 中使用的是 SendMessage, 那么调用则一直是顺序进行,但如果 DLL 中使用 PostMessage 进行消息传递,则有可能是你的 A 方法返回后系统才去调用 AAA 方法。

使用 PostMessage 时,实际上是将此消息投递到应用程序的消息队列的队尾中,待应用程序取出此消息时,根据消息映射,方去调用 AAA 方法。但在 DLL 中,它只要将消息送入到目标应用程序的消息队列,PostMessage 函数即返回。但 SendMessage 是等到应用程序处理完此消息后才返回。

不知你的问题是什么?

我来回复

您尚未登录,请登录后再回复。点此登录或注册