我在程序中定义了一个数组char lpInBuffer[1024],然后用::PostMessage(hWnd, COM_RECVDATA, (WPARAM) lpInBuffer, (LPARAM) dwBytesRead)将数据传递给消息处理函数的CString recvStr变量,两者应该怎样转换才可以。请大侠们指点,谢谢。

解决方案 »

  1.   

    VC里这样定义的:
    typedef UINT WPARAM;WPARAM就是无符号整型CString str;
    WPARAM qq;
    str.Format("%d", qq);
      

  2.   

    char buf[1024] = {0};
    memcpy(buf,(char*)wparam, (int)lparam);
    CString   recvStr;
    recvStr.format("%s", buf);
      

  3.   

    CString   str; 
    str.Format("%s",  (char *)wParam);
      

  4.   

    char *str1=(char*) wParam;
    CString str(str1);
      

  5.   

    直接把WPARAM转换成char*即可。你的程序运行会有问题:
    如果在消息中传递指针,应该使用SendMessage而不是PostMessage,否则指针指向的内容很可能在接收到消息时已经被破坏了
      

  6.   

    你从LPARAM参数传过去嘛,把你那两上参数定义成一个结构体或类;
      

  7.   

    我猜:你传过去的是一个指向内存的指针,而vs2005下默认的是wchar*。收的时候要用wchar*