RegSetValueExA 与 RegSetValueExW

qq506664095 2009-01-09 05:05:34

void CWarHDlg::OnBnClickedSetname()
{
// TODO: 在此添加控件通知处理程序代码
wchar_t buf[16];
char mbuf[32];

GetDlgItemTextW(IDC_NAME, buf, sizeof(buf));

WideCharToMultiByte(CP_UTF8, 0, buf, sizeof(buf) / sizeof(wchar_t), mbuf, sizeof(buf) / sizeof(wchar_t) + sizeof(buf), NULL, NULL);

HKEY hNameKey = NULL;
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\Blizzard Entertainment\\Warcraft III\\String"),
0, KEY_WRITE|KEY_READ, &hNameKey) == ERROR_SUCCESS)
{
if (RegSetValueExA(hNameKey, "userlocal", NULL, REG_SZ,
(LPBYTE)mbuf, strlen(mbuf)) == ERROR_SUCCESS)
{
MessageBox(_T("修改成功!"), _T("Messae:"), MB_OK);
}
}
if (hNameKey != NULL)
RegCloseKey(hNameKey);
}
//注: 是关于<<魔兽争霸3>>中 使用中文名字的主要代码


上面的代码是把 buf 的内容写入注册表

使用 RegSetValueExW
如果buf的内容为: 0xE8 0x80 0x81 0xE7 0x8E 0x8B ---------> 0xE8 0x80 0x81 0xE7 0x8E 0x8B

使用 RegSetValueExA
如果buf的内容为: 0xE8 0x80 0x81 0xE7 0x8E 0x8B ---------> 0x70 0x94 0x7A 0x4F 0x07 0x5E

0xC0 0xCF 0xCD 0xF5 (中文为: 老王) //编辑控件
---> WideCharToMultiByte
0xE8 0x80 0x81 0xE7 0x8E 0x8B //多字节
---> RegSetValueExA
0x70 0x94 0x7A 0x4F 0x07 0x5E //注册表

谁能帮我解释上面的转化过程.


...全文
461 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
菜牛 2009-01-10
  • 打赏
  • 举报
回复
上面的代码,是你的项目什么码就什么码;你可以修改为多字节、UNICODE、不设置等来看效果。
qq506664095 2009-01-10
  • 打赏
  • 举报
回复
这样只能设置游戏的英文名字
游戏的中文名字必须要那样转化啊
我是想知道上面的代码是什么码到什么码
菜牛 2009-01-09
  • 打赏
  • 举报
回复
    TCHAR mbuf[32];

GetDlgItemText(IDC_NAME, mbuf, sizeof(mbuf));
HKEY hNameKey = NULL;
if ( RegOpenKeyEx( HKEY_CURRENT_USER, _T("Software\\Blizzard Entertainment\\Warcraft III\\String"),
0, KEY_WRITE|KEY_READ, &hNameKey ) == ERROR_SUCCESS )
{
if ( RegSetValueEx( hNameKey, _T("userlocal"), NULL, REG_SZ,
(LPBYTE)mbuf, strlen(mbuf) ) == ERROR_SUCCESS)
{
MessageBox(_T("修改成功!"), _T("Messae:"), MB_OK);
}
}
if (hNameKey != NULL)
RegCloseKey(hNameKey);
qq506664095 2009-01-09
  • 打赏
  • 举报
回复
那我也没办法啊
我只知道这么做
各种编码方式我又不懂
所以来问问
菜牛 2009-01-09
  • 打赏
  • 举报
回复
捣浆糊啊,换来换去的。为什么不用一种编码就可以了?
zhangzb717 2009-01-09
  • 打赏
  • 举报
回复
帮顶

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧