两个不同进程间,用消息进行通讯的问题。

moyue 2004-07-08 11:23:40
一个进程是控制面板程序。一个是对话框程序。

目的是:对话框程序向控制面板程序发送一个消息,从而使控制面板程序里的flexgrid进行刷新。

我的消息是这样定义的:
UINT WM_MYREFRESH = RegisterWindowMessage("MYREFRESH");//注册消息

发送是这样的:
DWORD dwTemp = 0;
dwTemp = BSM_APPLICATIONS;
BroadcastSystemMessage(BSF_POSTMESSAGE,&dwTemp,WM_MYREFRESH,0,0);

控制面板程序那边的消息映射也写了:ON_REGISTERED_MESSAGE(...,...);

问题是发送消息后控制面板程序无接受到消息的反应。
...全文
232 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
WolfChaseLion 2004-07-09
  • 打赏
  • 举报
回复
我没试过.从逻辑上来看应该可以. ON_REGISTERED_MESSAGE(...,...)应该放在什么位置是否认真考虑过? 另外只为了在两者之间通信,BROADCAST好象不太合理.
moyue 2004-07-09
  • 打赏
  • 举报
回复
楼上的兄弟谢啦。
ShaftWhy 2004-07-09
  • 打赏
  • 举报
回复
发了第一个邮箱,3MB
moyue 2004-07-09
  • 打赏
  • 举报
回复
如果很大可以用aiwa_yue@yahoo.com
moyue 2004-07-09
  • 打赏
  • 举报
回复
jiangq@mawadata.com
谢谢啦。
ShaftWhy 2004-07-09
  • 打赏
  • 举报
回复
邮箱?
moyue 2004-07-09
  • 打赏
  • 举报
回复
楼上的能提供点例子不?
ShaftWhy 2004-07-09
  • 打赏
  • 举报
回复
进程间通信最好用共享存储区的方式,最高效。
在WIN32下就是共享内存映射文件。
moyue 2004-07-09
  • 打赏
  • 举报
回复
我现在用BroadcastSystemMessage(BSF_IGNORECURRENTTASK,&dwTemp,WM_MYREFRESH,0,0);做好了。
可我想知道如果用楼上所说的用句柄,那句柄又怎么传递呢?我的对话框程序是在控制面板程序里面用命令行形式唤起的。如果要传句柄,该怎么做呢?
谢谢楼上的兄弟们了!
moyue 2004-07-08
  • 打赏
  • 举报
回复
如果就用我那个方法可不可以呢。谢谢楼上的了。
WolfChaseLion 2004-07-08
  • 打赏
  • 举报
回复
简单的方法应该就能达到目的:
#define REFRESH_WND (WM_USER + 100)
//send message to 控制面板
FindWnd( 控制面板 ) -> PostMessage( REFRESH_WND )

//控制面板 deal the received message

ON_MESSAGE( REFRESH_WND ,on_Refresh)
yym314 2004-07-08
  • 打赏
  • 举报
回复
你这样广播我没用过,好象不好把
如果两个程序都是你自己写的,你为什么不首先得到另外一个程序的主窗句柄,然后再sendmessge呢?
Gladstone 2004-07-08
  • 打赏
  • 举报
回复
gz

15,471

社区成员

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

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