一个关于用C++创建窗体的程序(Visual C++面向对象与可视化程序设计·第二版)例3-1

程序代码如下图:

在VS2012 中编译是 出现以下错误
wndclass.lpszClassName = lpszClassName ;//窗口类名为“窗口实例”
错误:不能讲“char”类型的值分配到“LRCWSTR”的实体
hwnd =CreateWindow
错误:IntelliSence:"char"类型的实参与“LRCWSTR”类型形参不兼容
这两个问题怎么解决啊。。。求解答

用强制类型转换将char型显式转换为LPCWSTR

CreateWindow前两个参数也要强制转换

或者在项目菜单中选择项目属性菜单,更改字符集,选择使用多字节字符集

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-29
项目默认使用Unicode字符了,把API函数调用改一改。

一般用到字符或者字符串的API函数都有两个版本, 一个是函数名后面加了W的版本(使用Unicode字符),另一个是后面加了A的版本(使用ANSI字符集)。

CreateWindow这个不是函数而是一个宏,但你的程序里使用UNICODE字符时,他会展开为CreateWindowW版本的函数调用,但你的程序使用ANSI字符集时展开为CreateWindowA。

你的项目默认使用的是Unicode字符。把WNDCLASS 改成WNDCLASSA 、 CreateWindow改为CreateWindowA.

或者你在文件的最前面加一句#undef UNICODE本回答被提问者和网友采纳
第2个回答  2013-09-28
把wndclass.lpszClassName = lpszClassName;
改成wndclass.lpszClassName = (LRCWSTR)lpszClassName;

或者是右击项目->引用->配置属性
找到字符集,将使用“使用 Unicode 字符集”改成“使用多字节字符集”追问

createWindow 那里又是哪里错了哟。。。。

相似回答