vs2012的VC和VC6的编程写法有什么不一样吗?有代码,请教育

时间:2022-07-09 20:14:50
代码
void CRevealREGDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
HKEY hKey;
DWORD value= 0;
CString subkey="Control Panel\\Keyboard";
::RegCreateKey(HKEY_CURRENT_USER,subkey,&hKey);
::RegSetValueEx(hkey,"KeyboardDelay",NULL,REG_SZ,(BYTE*)&value,sizeof(Dword));
::RegCloseKey(hKey);
MessageBox("修改成功");
}

在VC6里运行没有问题,可以正常使用
但是在VS2012里面运行就不行

下面是错误代码:
1>------ 已启动生成: 项目: RevealREG, 配置: Debug Win32 ------
1>  stdafx.cpp
1>  RevealREGDlg.cpp
1>d:\vs c++\revealreg\revealreg\revealregdlg.cpp(161): error C2440: “初始化”: 无法从“const char [23]”转换为“ATL::CStringT<BaseType,StringTraits>”
1>          with
1>          [
1>              BaseType=wchar_t,
1>              StringTraits=StrTraitMFC_DLL<wchar_t>
1>          ]
1>          class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit”
1>          with
1>          [
1>              BaseType=wchar_t,
1>              StringTraits=StrTraitMFC_DLL<wchar_t>
1>          ]
1>d:\vs c++\revealreg\revealreg\revealregdlg.cpp(163): error C2065: “hkey”: 未声明的标识符
1>d:\vs c++\revealreg\revealreg\revealregdlg.cpp(163): error C2065: “Dword”: 未声明的标识符
1>d:\vs c++\revealreg\revealreg\revealregdlg.cpp(163): error C2070: “'unknown-type'”: 非法的 sizeof 操作数
1>d:\vs c++\revealreg\revealreg\revealregdlg.cpp(165): error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [9]”转换为“LPCTSTR”
1>          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>  RevealREG.cpp
1>  正在生成代码...
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
请帮忙纠正一下,到底是一个什么问题?我该如何写才能在VS2012里运行并生成程序成功?

2 个解决方案

#1


其他的不是很清楚。
但是将MessageBox("修改成功");改为MessageBox(_T("修改成功"));

#2


一个是代码不全,一个是你使用的是unicode的mfc,全部要用宽字节的字符串数组。

#1


其他的不是很清楚。
但是将MessageBox("修改成功");改为MessageBox(_T("修改成功"));

#2


一个是代码不全,一个是你使用的是unicode的mfc,全部要用宽字节的字符串数组。