可以传递字符串的,它的意思是传送的数据的内容不能是指针。
看一下COPYDATASTRUCT的结构就知道了,
cbData:字符串的长度 
lpData :字符串的首地址

解决方案 »

  1.   

    我要传递的是一个结构啊,里面有
    typedef struct
    {
      CString a;
      int b;
    } MyMsg;
    我是这么写的:
    COPYDATASTRUCT cds;
    MyMsg msg;
    msg.a = "hello";
    msg.b = 1;
    cds.dwData = 0;
    cds.cbData = sizeof(msg);
    cds.lpData = &msg;
    另一个程序的接收端是这么写的:
    MyMsg msg;
    if (pCopyDataStruct->cbData == sizeof(MsgCmd))
    {
      //Copies characters between buffers.
      memcpy(&msg,pCopyDataStruct->lpData,sizeof(MyMsg)); 
      CString a;
      int b;
      a = msg.a;  
      b = msg.b;
      AfxMessageBox(a);
      return TRUE;
    }
    运行时就出错了,请问该怎么改啊?
      

  2.   

    把CString a改为一个足够大的字符数组就行了,如:char a[50];
      

  3.   

    就是把CString改称字符数组就好了:
    typedef struct
    {
      char a[50];
      int b;
    } MyMsg;发送端:
    COPYDATASTRUCT cds;
    MyMsg msg;
    strcpy(msg.a, "hello");
    msg.b = 1;
    cds.dwData = 0;
    cds.cbData = sizeof(msg);
    cds.lpData = &msg;接收端:
    MyMsg msg;
    if (pCopyDataStruct->cbData == sizeof(MsgCmd))
    {
      //Copies characters between buffers.
      memcpy(&msg, pCopyDataStruct->lpData, sizeof(MyMsg)); 
      CString a;
      int b;
      a = msg.a;  
      b = msg.b;
      AfxMessageBox(a);
      return TRUE;
    }
      

  4.   

    传送的数据里面不能有指针,可将
    typedef struct
    {
      CString a;
      int b;
    } MyMsg;
    改为
    typedef struct
    {
      char a[1024];
      int b;
    } MyMsg;
    即可.
    另外一定要用SENDMESSAGE,不能用其他的消息发送函数