如题

解决方案 »

  1.   

    CString str("aaaa");
    (LPARAM)str.GetBuffer();
      

  2.   

    这样
    CString *pStr=&str;
    LPARAM lp=(LPARAM) pStr;在线程内部为CString *pStr=(CString*)lp;
    然后就可以用*pStr来表示所传的参数.注意LPARAM其实是一种void*类型,C中都是用void*来表示或传递各种不同的类型的指针的.
      

  3.   

    LPARAM = (LPARAM)((LPCTSTR)str);
    得到的是里面的字符串指针
      

  4.   

    问题是你要干吗,理论上不存在从一个CString对象到一个LPARAM变量的转换。
    你是想要一个CString对象的地址呢?还是想要一个CString对象里边的字符缓冲区的地址呢?
      

  5.   

    要謹慎將CString做lParam來傳遞.因為一般情況下,等你的消息發送出后,CString自動析構了.可以用這種方法new char[X];然后發送出去后,記得delete [] (char*)lParam,不然會發生內存泄漏.
      

  6.   

    要謹慎將CString做lParam來傳遞.因為一般情況下,等你的消息發送出后,CString自動析構了.可以用這種方法new char[X];然后發送出去后,記得delete [] (char*)lParam,不然會發生內存泄漏.的确,不过如果CString是全局变量就没有关系了