在程序b中我用如下程序发送数据
pWnd = FindWindow(NULL, "a");
ASSERT(pWnd);
         char buf[3];
         memset(buf, "ok", 2);
         buf[2] = NULL;
pWnd->PostMessage(IDD_MYMESS, (WPARAM)&buf[0], 2);在程序a中在这个消息处理程序中收
LRESULT CADlg::GetMess(WPARAM wParam, LPARAM lParam)
{
         char buf[3];
         memcpy(buf, (char *)wParam, lParam);
         AfxMessageBox(buf);
return 0;
}为什么我能收到lParam的大少,但却收不到"ok"呢
谢谢
谢谢

解决方案 »

  1.   

    用SendMessage
    因为你发送的buf在目标窗口中不认识,所以不能得到
      

  2.   

    SendMessage也一样的但我如果才能实现上述功能呢谢谢
    谢谢
      

  3.   

    跨进程的话除了WM_SETTEXT和WM_COPYDATA外就没有别的消息可以送数据了。另外除非你在9X下将数据用FileMapping才行。所以,最简单的还是用WM_COPYDATA吧。
      

  4.   


    在发送方:
    ATOM attext = GlobalAddAtom(strMyText);
    ::SendMessage (pwnd,WM_MYMSG,(WPARAM)attext,0);在GetMess()中用如下方法:
    char buf[1024];
    ATOM atdb = wParam;
    GlobalGetAtomName(atdb,buf,1024);
    Str = buf;
    GlobalDeleteAtom(atdb);
      

  5.   

    pwnd怎么来呢
    我这样做
    ::SendMessage(pWnd->m_hWnd, WM_COPYDATA, (WPARAM)attext, 0);
    就不行