在设置注册表键值时,使用RegSetValue(HKEY hKey,LPCTSTR lpValueName,DWORD Reserved,DWORD dwType,CONST BYTE* lpData,DWORD cbData)时,因为我是从一个 Cedit控件中获取数据,类型是CString型,但是强制转换BYTE*会报错,大哥大姐,帮帮忙

解决方案 »

  1.   

    CString str;
    (BYTE*)LPCTSTR(str)
      

  2.   

    大哥,LPCTSTR(str)是什么意思啊?
      

  3.   

    //Cstring -->char[] 
    CString str;
    str = "kingpang";
    char cstr[128];
    WideCharToMultiByte(CP_OEMCP, 0, str, -1, cstr, str.GetLength(), NULL, NULL); 
      

  4.   

    CString转换为char数组[],不知道你的CString是不是UNICODE的呢
    假设有要转换的CString变量strchar* szStr;
    int num=str.GetLgenth();
    szStr=new char[num];
    memcpy(szStr,(LPCTSTR)str,num);
      

  5.   

    当然有可能是unicode,
    请问还有什么函数啊
    就是从一个编辑框里得到文本(CString类型),然后写入注册表里。
      

  6.   

    用Cstring::GetBuffer(int nCount);这个方法看看。
      

  7.   

    CString str;
    char* ch =str.getbuffer(0); 
      

  8.   

    CString str;
    将函数调用的str实参换成str.GetBuffer(str.GetLength())
      

  9.   

    用多字节编码的话可以试试这个 char temp[4];
    CString str = _T("23");
    char* pchar = str.GetBuffer(0); 
    strcpy(temp,pchar);
    如果是unicode编码的话,用这个 char temp[4];
    CString str = _T("23");
    USES_CONVERSION;
    char* pchar = _T("");
    pchar = W2A(str);
    strcpy(temp,pchar);