整容说文库 > 程序代码 > 教育资讯

急:问一个消息队列的问题

来源:学生作业帮助网 编辑:整容说文库 时间:2020/12/04 16:33:04 程序代码
急:问一个消息队列的问题程序代码
我用VC编写了一个程序,与别人的.Net编的程序,通过消息队列通讯。.Net编的程序规定消息格式为BinaryMessageFormatter,我用的MSMQ的c的API,对方在接收我的消息时,出现反序列化失败的错误。不知道我的消息格式,该怎么填写?这个问题是不是MQMSGPROPS,MSGPROPID,PROPVARIANT结构的填写问题,该如何正确填写,请知道的大侠多指教!!!谢谢
偶不大明白
怎么还有一个?
Up
去.NET问比较合适
refer MSDN MSMQ [MSMQ] (See Message Queuing [MSMQ].)
俺也觉得消息队列比较难搞.
但SDK里那些例子好像都是一句话搞定,晕呀
难道序列化的顺序也会反?
两个进程用消息队列通信,你发送的消息和接收的消息都可以自己定,怎么会不知道自己发的什么消息啊?奇怪!
给你个例子吧

主控程序的实现 
(1)新建一工程文件:Sender,选取MFC AppWizard(exe)。 
(2)第二步选取Single document(单文档)。 
(3)其余几步均为确省值。 
(4)添加三个菜单"命令一"、"命令二"、"命令三"及与之对应的函数: 
OnSendComm1() 

CString str="Receiver"; 
CWnd *pWnd=CWnd::FindWindow(NULL,str); 
if(pWnd) 
pWnd->SendMessage(WM_COMM,0,0); 

OnSendComm2() 

CString str="Receiver"; 
CWnd *pWnd=CWnd::FindWindow(NULL,str); 
if(pWnd) 
pWnd->SendMessage(WM_COMM,0,1); 

OnSendComm3() 

CString str="Receiver"; 
CWnd *pWnd=CWnd::FindWindow(NULL,str); 
if(pWnd) 
pWnd->SendMessage(WM_COMM,1,0); 


在SenderView.h中添加自定义消息:#define WM_COMM WM_USER+100编译完成即可。 
   

底层工作程序的实现 
(1)新建工程Receiver、仍是单文档。 
(2)在CReceiverApp类的InitInstance()函数末尾添加: 
m_pMainWnd->SetWindowText("Receiver"); 
用以指定底层工作程序的窗口标题,以便主控程序能根据标题获取到此窗口的窗口句柄。 
(3)在MainFrm.h中添加自定义消息:#define WM_COMM WM_USER+100。 
(4)添加自定义消息WM_COMM的消息映射: 
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) 
//{{AFX_MSG_MAP(CMainFrame) 
// NOTE - the ClassWizard will add and remove mapping macros here. 
// DO NOT EDIT what you see in these blocks of generated code ! 
ON_WM_CREATE() 
//}}AFX_MSG_MAP 
ON_MESSAGE(WM_COMM,OnSendMsg) 
END_MESSAGE_MAP() 
(5)完成消息响应函数OnSendMsg() 
void CMainFrame::OnSendMsg(WPARAM wParam, LPARAM lParam) 

if(wParam==0 && lParam==0) 
AfxMessageBox("主控程序发送命令一!"); 
if(wParam==0 && lParam==1) 
AfxMessageBox("主控程序发送命令二!"); 
if(wParam==1 && lParam==0) 
AfxMessageBox("主控程序发送命令三!"); 
}
程序代码