1.不同进程为什么接受端的lpbuf 内容不正确
2.当发消息端和消息响应端在一个进程中,内容,就是正确的?
发消息端:
char lpbuf[] = "MessRec" ;
CWnd * pWnd = FindWindow(NULL,lpbuf);
int nRe =-1;
msg.nType  =11;
sprintf(msg.lpbuf ,"abcdef");
UINT uAddr = (UINT)(&msg);
if(pWnd)
{
 nRe = pWnd->SendMessage(UWM_REPLAY_FILE,(UINT)lpbuf,10);
}消息响应端:
LRESULT CMessRecDlg::OnRecMsg(WPARAM wParam, LPARAM lParam)
{ char * lpbuf = (char *)wParam;
//MessageBox("11");
return 10;
}

解决方案 »

  1.   

    使用WM_COPYDATA:CString str = _T( "Hello" );
    HWND hWndReceived = FindWindow( "Receiver", NULL );COPYDATASTRUCT cpd;
    cpd.dwData = 0;
    cpd.cbData = strDataToSend.GetLength()+1;
    cpd.pData = (void*)str.GetBuffer(cpd.cbData);SendMessage( hWndReceived, WM_COPYDATA, 0, (LPARAM) & cpd );
    str.ReleaseBuffer();加入映射宏:BEGIN_MESSAGE_MAP(CMyWnd, CWnd)
    //{{AFX_MSG_MAP(CMyWnd)
    ...
    ON_WM_COPYDATA()
    ...
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()...映射函数:BOOL CMyWnd::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) 
    {
       CString strRecievedText = (LPCSTR) (pCopyDataStruct->lpData);
       return CMyWnd::OnCopyData(pWnd, pCopyDataStruct);
    }
      

  2.   

    首先谢谢,楼上!
    SendMessage是等待响应消息涵数完成后,才返回,能否传回去一个内存块中内容?
      

  3.   

    消息不能返回缓冲的,要返回数据很简单: 再向源窗口发送一条 WM_COPYDATA 消息即可
      

  4.   

    BOOL sssss::OnCopyData(WPARAM wParam,LPARAM lParam) 
    {
    PCOPYDATASTRUCT poCopyData=(PCOPYDATASTRUCT)lParam;
    CString Str;
    Str.Format ("%.*s", poCopyData->cbData, poCopyData->lpData);
    //str 即为传过来的数值
    return TRUE;
    }