在VS2008环境下,使用unicode,有什么办法可以将CString转换为LPVOID形式吗?
试过(LPVOID)(LPCTSTR)str,这样在ASCII下没问题,但是在unicode环境下好像失去了效果,
unicode环境下,str.GetBuffer()好像也失去了作用,

解决方案 »

  1.   

    ...
    GetBuffer为什么会失效??
      

  2.   


    其实还是昨天那个问题,
    利用CInternetSession创建POST,需要向其中传递数据,CString BB;
    pFile -> SendRequest(NULL,0,BB.GetBuffer(),BB.GetLength());
    这样发送的并不是正确的数据啊。 中间的第三个参数数据应该怎么从uncode下的CString转换为LPVOID呢?
      

  3.   

    应该是长度不对吧
    pFile -> SendRequest(NULL,0,BB.GetBuffer(),strlen(BB.GetBuffer())); 
      

  4.   

    给你看看我以前用的  pFile -> SendRequest(NULL, 0, (LPTSTR)(LPCTSTR)strPostDate, strPostDate.GetLength());
      

  5.   

    不是长度的问题哦,而且strlen支持的是ASCII
      

  6.   

    CSting::GetLength是取得字符的个数,不是物理长度
      

  7.   


    那为什么发出去的数据只是拿到了第一个字符啊?
    比如CString BB=L"title=12345",
    pFile -> SendRequest(NULL, 0, (LPTSTR)(LPCTSTR)strPostDate, strPostDate.GetLength());
    这样发送之后转包结果只是发送的数据为t,其他没有了
      

  8.   

    跟你说了   抓包  看结果   如果是Unicode的双字问题   你就应该用char数组来存放需要Post的数据  
    即用W2A宏将CString里面的内容存放到char里面在发送     无他法