关于消息传递的问题:SendMessage(hwnd,myMessage,(WPARAM)wParam,lParam)中wParam如果是CString数组,能不能传?如何接收?

解决方案 »

  1.   

    没试验过 不过我觉得应该可以 WPARAM对应的定义是unsigned int或者是unsigned long
    在32位cpu的系统上都是一样的 和一个指针所占的字节数相同 你试试把你的CString数组的首地址作为WPARAM传过去 在消息响应函数中就可以得到数组的首地址了
      

  2.   

    http://search.csdn.net/expert/topic/50/5005/2002/6/9/790222.htm
      

  3.   

    you can pass the pointer of the sting array!
      

  4.   

    wParam是指针
    在同一进程中可以直接传递
    CString str="1234";
    SendMessage(NULL,myMessage,(WPARAM)&str,lParam)中
    \\\\\\\\\\\\\\\
    ON_MESSAGE(myMessage,MyFuc)
    \\\\\\\\\\\\\\\\\\\\\\
    void MyFuc(LPVOID param)
    {
      CString * pstr=(CString *)param;
      AfxMessageBox(*pstr);
    }
      

  5.   

    看这个,呵呵。所以可以
    _TCHAR ch[128];         // text buffer
    ::SendMessage (hWnd, WM_GETTEXT, 128, (LPARAM)ch);
      

  6.   

    关键是我不是在同一个进程中传递的,在接收消息方,只要将wParam转成CString *或者其他指针后,进行读取的时候,应用程序就报错,说该内存不能read?!!!
      

  7.   

    在不同进程里可以用:
    CString strDataToSend  = _T("This is a message to send");
    COPYDATASTRUCT cpd;
    cpd.dwData = 0;
    cpd.cbData = strDataToSend.GetLength();
    SendMessage(WM_COPYDATA,(WPARAM)AfxGetApp()->m_pMainWnd->GetSafeHwnd(),(LPARAM)&cpd);