dll向EXE发送消息的问题

COLOURMEAT 2008-09-14 12:18:20
希望能在exe中响应dll传会的消息。现在已经在exe中该消息的声明和处理已经都做好了。我按照网上查的资料,修改dll时,出现了两个问题,希望大家能帮着解决一下:
1.我希望在exe窗口上点击一个按钮,调出dll的窗口,不过如何将exe的窗口句柄传给dll?dll中要有一个什么样的变量接收这个hwnd?
2.我的dll按如下操作总是报错:
(1) 在stdafx.h头文件中添加消息定义:
#define WM_MSG WM_USER + 102
      

(2) 添加启动消息的输出函数:(我把这个东西加到了CMessageDLLApp这个类里面,不知道对不对)
       CMessageDLLApp theApp;
extern "C" _declspec(dllexport) void StartSendMessage(HWND hwnd)
{
theApp.SendMessage(hwnd);
}     
   其中hwnd是接收消息的窗口句柄。

(3) 添加启动消息的实现函数:(加到了CMessageDLL里面)

在CMessageDLL头文件中添加函数声明:
void SendMessage(HWND hwnd);
在CMessageDLL文件中添加函数实现
void CMessageDLLApp::SendMessage(HWND hwnd)
{
::PostMessage(hwnd,WM_MSG,0,1);
}
希望高手们能帮着调一调,谢谢大家

...全文
199 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
DentistryDoctor 2008-09-15
  • 打赏
  • 举报
回复
Dll导出的函数中还是支持HWND参数的啊。
没看出你的代码这样写的意义。还有,出什么错了?有错误提示吗?在调试中看一下调用栈呢?
COLOURMEAT 2008-09-15
  • 打赏
  • 举报
回复
已经解决了,多谢大家支持,散分了
fxhsz 2008-09-15
  • 打赏
  • 举报
回复
dll里就一个HWND 类型变量接收传来得 窗口啊,然后对着这个窗口 发消息 ,没有任何问题

有问题要自己多做测试,
top_hipster 2008-09-14
  • 打赏
  • 举报
回复
App中代码基本可以,但是那个PostMessage没什么意义,那里都可以用,至于DLL中你随便导出一个函数让App设置父窗口的句柄,在DLL中直接使用SendMessage函数就好了
cnzdgs 2008-09-14
  • 打赏
  • 举报
回复
1、导出函数定义一个HWND类型的参数即可。
2、报什么错?
zhoujianhei 2008-09-14
  • 打赏
  • 举报
回复
感觉楼主在做无用功,::PostMessage(hwnd,WM_MSG,0,1); 你放到哪里都可以啊。

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧