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 //注册表谁能帮我解释上面的转化过程.
解决方案 »
- ★怎么用MFC实现绘制4位验证码???
- 这样判断是否连接成功对不对,有没有更好办法?
- 关于Static控件的Notify的疑问
- 想问一下,关于按扭的状态,怎么捕获?比如我想在鼠标移动到按扭上就显示另一种图标。
- 如何在DLL 中创建一个单文档窗口 并在窗口里输出一段文字?
- case expression not constant 在线等解答?
- 怎样在进程间传输带有指针变量的结构数据?
- 为什么子窗口中,可以点到之前窗口的按钮?
- overwind_slash(残翅迎风) 进来领分,再次非常感谢。
- 为什么GetDlgItem()失效了
- 服务器上的数据想传输到客户端(http),如何实现快速传输? 请给意见
- 求教:屏蔽鼠标键盘消息的问题
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);