假设你要传送的是UINT anNum[10];
所在的窗口句柄是hWndFrom(如果在CWnd对象中,可以用hWndFrom = GetSafeHwnd());
要发送至窗口hWndTo:
SendMessage(hWndTo, WM_COPYDATA, (WPARAM)hWndFrom, (LPARAM)anNum);
注意,必须用SendMessage(),不能用PostMessage()。

解决方案 »

  1.   

    你的意思是hWndFrom是指本窗口的指针,hWndTo指目的窗口的指针吧?
    hWndTo是否可以通过FindWindow()来取得?
    hWndFrom如果是在CFormView里该怎么办?
    谢谢!
      

  2.   

    hWndTo可以通过FindWindow()来取得;
    CFormView是从CWnd继承而来的,GetSafeHwnd()同样适用。
      

  3.   

    转:用WM_COPYDATA的前提:1,知道接收消息进程的句柄。2,接收消息进程重载了WM_COPYDATA消息映射,能对其做出反应(否则不是发送端自作多情了?)看过前提,的出结论:在自己写的两个进程间用WM_COPYDATA再好不过。下面CODE几行就说明了一切。获得句柄的方法,最简单的方法就是使用FindWindow,找窗口类,或者名,如果你觉得这样不把握,那就利用SetProp个窗口做个记号....(不说这些,跑踢儿了都)发送端代码:HWND hWnd = FindWindow(NULL,"MyApp");if(hWnd!=NULL){      COPYDATASTRUCT cpd; /*给COPYDATASTRUCT结构赋值*/      cpd.dwData = 0;      cpd.cbData = strlen("字符串");      cpd.lpData = (void*)"字符串";      ::SendMessage(hWnd,WM_COPYDATA,NULL,(LPARAM)&cpd);//发送!
    }接收端重载ON_WM_COPYDATA消息映射函数(下面是手工所要加的,你最好还是用ClassWizard)afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);ON_WM_COPYDATA()/*消息映射*/BOOL CMainFrame::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct) 
    {
            AfxMessageBox((LPCSTR)(pCopyDataStruct->lpData));/*利用对话框表示收到消息*/        return CWnd::OnCopyData(pWnd, pCopyDataStruct);
    }