3073|3

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

WINCE写注册表乱码 [复制链接]



  1. int MAX_SIZE = 256;
  2.         HKEY  hKey1;
  3.         wchar_t *key1Value = L"abc";//这里写成中文结果也相同
  4.         char *key1buf = new char[MAX_SIZE];
  5.        
  6.         memset(key1buf,0,MAX_SIZE);

  7.         int size = 0;//得到转换的字节数是3
  8.         size  = wcstombs(key1buf,key1Value,MAX_SIZE);
  9.         key1buf[size] = '\0';
  10.          
  11.         DWORD keyReturn;
  12.         long hResult = 0;
  13.         hResult = RegCreateKeyEx(HKEY_CLASSES_ROOT,TEXT("mypro"),0,TEXT("REG_NONE"),REG_OPTION_NON_VOLATILE,0,NULL,        &hKey1,&keyReturn);
  14.         if(hResult == ERROR_SUCCESS )
  15.         {
  16.                 hResult = RegSetValueEx(hKey1,TEXT("Default"),0,REG_SZ,(byte *)key1buf, strlen(key1buf)+1);
  17.                 if(hResult == ERROR_SUCCESS)
  18.                 {
  19.                         MessageBox(NULL,TEXT("mypro Created Successfully"),TEXT("Message"),MB_OK);
  20.                 }
  21.         }
  22.         RegCloseKey(hKey1);
  23.          delete[] key1buf;
复制代码


       以上是完整的代码,编译正常通过,但是在实际执行之后,比如写入123,得到的结果就是1和2被解释成了乱码,3还在,检查了很久也没想通到底是哪里的问题,宽字符转换到字节,大小不是应该增大的吗,为什么还是和原来的大小相同,麻烦高手帮忙,谢谢!
此帖出自WindowsCE论坛

最新回复

     恩,这样做是可以的,我还以为我对宽字符和字符的理解出现了问题,原来这里只是需要这个指针而已。。。。  详情 回复 发表于 2009-8-21 23:09
点赞 关注
 

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
   没有朋友遇到一样的问题吗
此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
楼主,这里不需要将 UNICODE 编码转换为 多字节 编码。

关键处如下:

wchar_t * key1Value = L"abc";

RegSetValueEx(hKey1,TEXT("Default"),0,REG_SZ,(BYTE*)key1Value, (_tcslen(key1Value))*2 );


说明:

因为 RegSetValueEx 写入数据是按【字节】写入的,所以需要(BYTE*)强制转换指针;

_tcslen 函数用来计算字符串中的字符数;

因为使用了 UNICODE 编码,所以【字节数=字符数×2】


你可以试试看!
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
     恩,这样做是可以的,我还以为我对宽字符和字符的理解出现了问题,原来这里只是需要这个指针而已。。。。
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表