如何接收CWd::SendMessage发出的消息?

qinken547 2010-11-27 06:32:31
一个进程A(一个窗口)中有如下代码:

//找到接收消息的窗口(窗口名为进程B)
CString str="进程B";
CWnd *pWnd=CWnd::FindWindow(NULL,str);
if(pWnd)
{
COPYDATASTRUCT buf;
char * s=new char[m_Msg1.GetLength()]; //m_Msg1为CString类型的变量
s=m_Msg1.GetBuffer(0);

buf.cbData=strlen(s)+1;
buf.lpData=s;
pWnd->SendMessage(WM_COPYDATA,0,(LPARAM)&buf); //传送大量数据要用WM_COPYDATA消息
}


如何在另外一个进程B(一个窗口)中收到上述进程中发出的消息?主要想实现的功能是进程A中的字符串发给B,然后在B中显示...
判断wParam=和lParam的值试过,貌似不行.....
...全文
99 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dclchj 2010-11-27
  • 打赏
  • 举报
回复
是我错了。学习!
qinken547 2010-11-27
  • 打赏
  • 举报
回复
唉,原来是我一个名称写错了....
qinken547 2010-11-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 happyparrot 的回复:]

char * s=new char[m_Msg1.GetLength()]; //m_Msg1为CString类型的变量
s=m_Msg1.GetBuffer(0);
=========这代码有内存泄漏啊.根本不需要用new分配空间
[/Quote]
这个我待会改,关键是进程B怎么收到进程A的消息啊?
qinken547 2010-11-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dclchj 的回复:]

跨进程共享数据需要用其它方法,你这个只能是同一进程(同)不同线程有效。
[/Quote]
我看过一个示例程序可以啊,就是判断Param=和lParam的值
代码如下:
进程Sender:
void CSenderDlg::OnCommand1() 
{
//找到接收消息的窗口(窗口名为Receiver)
CString str="Receiver";
CWnd *pWnd=CWnd::FindWindow(NULL,str);
if(pWnd)
pWnd->SendMessage(WM_COMM,0,0);
}
//发送命令二
void CSenderDlg::OnCommand2()
{
//找到接收消息的窗口(窗口名为Receiver)
CString str="Receiver";
CWnd *pWnd=CWnd::FindWindow(NULL,str);
if(pWnd)
pWnd->SendMessage(WM_COMM,0,1);
}
//发送命令三
void CSenderDlg::OnCommand3()
{
//找到接收消息的窗口(窗口名为Receiver)
CString str="Receiver";
CWnd *pWnd=CWnd::FindWindow(NULL,str);
if(pWnd)
pWnd->SendMessage(WM_COMM,1,0);
}

进程Receiver:
void CReceiverDlg::OnReceiveMsg(WPARAM wParam,LPARAM lParam)
{
if(wParam==0 && lParam==0)
AfxMessageBox("主控程序发送命令1!");
if(wParam==0 && lParam==1)
AfxMessageBox("主控程序发送命令2!");
if(wParam==1 && lParam==0)
AfxMessageBox("主控程序发送命令3!");
}
快乐鹦鹉 2010-11-27
  • 打赏
  • 举报
回复
char * s=new char[m_Msg1.GetLength()]; //m_Msg1为CString类型的变量
s=m_Msg1.GetBuffer(0);
=========这代码有内存泄漏啊.根本不需要用new分配空间
dclchj 2010-11-27
  • 打赏
  • 举报
回复
跨进程共享数据需要用其它方法,你这个只能是同一进程(同)不同线程有效。

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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