本帖最后由 davidcao007 于 2011-07-31 23:51:23 编辑

解决方案 »

  1.   

    CString::GetBuffer(...);
    CString::ReleaseBuffer();
      

  2.   

    在B 函数里
    是这样吗,能把str1的值给了str
    str = str1.GetBuffer();
    str1.ReleaseBuffer();
      

  3.   

    LPTSTR lpTest;
    CString strTest;
    lpTest = strTest.GetBuffer();
    strTest.ReleaseBuffer();//释放内存,OK了
      

  4.   


    那要传递的lptstr参数str,该怎么定义呢
    是 TChar*str = new TChar[MAX_PATH]?
      

  5.   

    { CString str1 = _T("strTemp");//定义str1
     LPTSTR str =(LPTSTR)(LPCTSTR)str1;//定义str,并把str1的值赋给LPTSTR形的str。传参数时候,你用str就可以了。 //LPTSTR类型与char*等价,指向字符/字符串的指针。
    }
      

  6.   

    fun A()
    {
     CString str1;
     LPTSTR str =(LPTSTR)(LPCTSTR)str1; B(str);MessageBox(str1);///////////////这里的str1 还不是Test的哦
    }fun B(LPTSTR lpStr)
    {
      CString strTemp = _T("Test");
      lpstr = strTemp.GetBuffer();
      strTemp.ReleaseBuffer();
    }这样的吗,貌似MessageBox(str1);///////////////这里的str1 还不是Test的哦
      

  7.   

    lpstr = strTemp.GetBuffer(strTemp.GetLength());
      strTemp.ReleaseBuffer();
      

  8.   


    B函数要声明成B(LPTSTR & lpstr).指针的引用,不然你改来改去都是白改。
      

  9.   

    结贴,用了TCHAR str[MAX_PATH] 传了str
    里面用了 _tcscpy()