首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

进程中利用WM_COPYDATA通信遇到的有关问题

2012-04-12 
进程中利用WM_COPYDATA通信遇到的问题?我在一个进程中,利用hwDispatchFindWindow(Disp32Class ,Hidden

进程中利用WM_COPYDATA通信遇到的问题?
我在一个进程中,利用
hwDispatch   =   FindWindow(   "Disp32Class ",   "Hidden   Window "   );
      if(   hwDispatch   !=   NULL   )
            SendMessage(   hwDispatch,
                                      WM_COPYDATA,
                                      NULL,
                                      (LPARAM)   (LPVOID)   &MyCDS   );
发送一个消息到另外一个进程。
另外一个进程是这样的(不是基本Dialog的):
int   WINAPI   WinMain(HINSTANCE   hInstance,
                                      HINSTANCE   hPrevInstance,
                                      LPTSTR         lpCmdLine,
                                      int               nCmdShow)
{
MSG   msg;
g_hwnd   =   NULL;

//   执行应用程序初始化:
if   (!InitInstance(hInstance,   nCmdShow))  
{
return   FALSE;
}

HACCEL   hAccelTable;
hAccelTable   =   LoadAccelerators(hInstance,   MAKEINTRESOURCE(IDC_MAILCLIENT));

PushmailMsgpacket   msgPacket;
memset(&msgPacket,   0,   sizeof(PushmailMsgpacket));

//   主消息循环:
//while   (GetMessage(&msg,   NULL,   0,   0))  
while   (1)
{
//获取短信解析模块传递的消息
PeekMessage(&msg,   NULL,   0,   0,   PM_REMOVE);

if   (msg.message   ==   NULL)
{
continue;
}
if   (msg.message   ==   WM_COPYDATA)
{
pMyCDS   =   (PCOPYDATASTRUCT)msg.lParam;
PushmailMsgpacket   *   ppm   =   (PushmailMsgpacket*)pMyCDS-> lpData;
memcpy((void   *)&msgPacket,   (void   *)ppm,   sizeof(PushmailMsgpacket));
break;
}
/*if   (!TranslateAccelerator(msg.hwnd,   hAccelTable,   &msg))  
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}*/
}


}
在这个里面,我用getmessage的时候,无法获取消息,利用peekmessage还是无法获取,请问在这种情况下,我如何才能另外的进程获取消息呢?谢谢


[解决办法]

PeekMessage(&msg, NULL, 0, 0, PM_REMOVE);
改为
PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);
应该就可以了,这是典型的无窗口的消息列产生方法。

热点排行