送98分,但问题并不难。 如何往WIN9X注册表写一个字符串,而这个字符串由CString变量确定。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 类型不匹配就转换一下。比如:LPSTR lp=Str.GetBuffer(0);写到默认的好象键名设为NULL m_sEditAppProgramName是个CString类型的变量,而::RegSetValueEx的第五个参数是个LPVOID类型的变量,CString可以转变为LPCTSTR,却不可以直接转变为LPVOID,你应该作如下更改:lRet = ::RegSetValueEx( hOpenKey, "(默认)", 0, REG_SZ, (LPVOID)(LPCTSTR)m_sEditAppProgramName, //出错行m_sEditAppProgramName.GetLength()+1); 很遗憾,还是不行。出错信息为:cannot convert parameter 5 from 'void *' to 'const unsigned char *'麻烦您再想想办法! 这个函数的参数就不能用CString.LPVOID 就是 void* 的意思.后边还有一个表示大小的参数.所以正确的应该是:char* tmp_cStr=new char[m_sEditAppProgramName.GetLength()+1];memset(tmp_cStr,0,m_sEditAppProgramName.GetLength()+1);memcpy( tmp_cStr, m_sEditAppProgramName.GetBuffer(0), m_sEditAppProgramName.GetLength());// 将出错的参数改为:(void*)tmp_cStr;// 将后面的参数改为:(m_sEditAppProgramName.GetLength()+1)delete[] tmp_cStr; 自己转换,大致如下:CString str="sth";LPBYTE p=new BYTE[str.GetLength()+1];for(int i=0;i<str.GetLength();i++) p[i]=str[i];p[i]='\0';//do sthdelete[]p; (const unsigned char *)str.GetBuffer(0)就可以了,至于那么麻烦吗? 问题解决了,谢谢各位的帮忙。特别谢谢hnyyy(前进) ! huqiming(Super) 说的用NULL写为默认值也是正确的。我送您20分,可能少了一点,很抱歉哦!谢谢各位!谢谢您们热心的帮助! FAT属于"照映文件",那么哪种文件系统属于"随机文件"或者"索引文件"? 关于窗口拖动时用DrawDragRect 画虚边框的用法请教 MFC 定义POSITION 出错 ????调用另一类成员函数错误??? 如何或得某个进程占用内存空间的大小 更新SQL Server记录, 出现不可思议的错误: 字符串字段为NULL错误 给位高手,请问如何断开猫,有这方面的函数嘛。 文件操作的问题,请教!!! 知道MDB 数据库的文件位置,如何用连接它呢?? (关键字:ADO连接) dev-c++是什么东西?? 如何编写浏览器的插件?? 求助!!!!!!!
比如:
LPSTR lp=Str.GetBuffer(0);
写到默认的好象键名设为NULL
lRet = ::RegSetValueEx(
hOpenKey,
"(默认)",
0,
REG_SZ,
(LPVOID)(LPCTSTR)m_sEditAppProgramName, //出错行
m_sEditAppProgramName.GetLength()+1
);
cannot convert parameter 5 from 'void *' to 'const unsigned char *'
麻烦您再想想办法!
LPVOID 就是 void* 的意思.
后边还有一个表示大小的参数.所以正确的应该是:char* tmp_cStr=new char[m_sEditAppProgramName.GetLength()+1];
memset(tmp_cStr,0,m_sEditAppProgramName.GetLength()+1);
memcpy( tmp_cStr,
m_sEditAppProgramName.GetBuffer(0),
m_sEditAppProgramName.GetLength());
// 将出错的参数改为:(void*)tmp_cStr;
// 将后面的参数改为:(m_sEditAppProgramName.GetLength()+1)
delete[] tmp_cStr;
CString str="sth";
LPBYTE p=new BYTE[str.GetLength()+1];
for(int i=0;i<str.GetLength();i++)
p[i]=str[i];
p[i]='\0';
//do sth
delete[]p;
特别谢谢hnyyy(前进) !
huqiming(Super) 说的用NULL写为默认值也是正确的。我送您20分,可能少了一点,很抱歉哦!
谢谢各位!谢谢您们热心的帮助!