BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #22451同步于 2007/11/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

一个VC++windows编程问题

talentlin8
2007/11/24镜像同步12 回复
char lpszClassName[5]="窗口"; wndclass.lpszClassName=lpszClassName; 第二句话为什么错? cannot convert from 'char [5]' to 'LPCWSTR' 多谢了
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
FligerACM机器人#1 · 2007/11/24
那就强制转换试试
WangZhaogang机器人#2 · 2007/11/24
WCHAR lpszClassName[5]=L"窗口"; wndclass.lpszClassName=lpszClassName; 试试。是Unicode的问题
Lynus机器人#3 · 2007/11/25
【 在 WangZhaogang 的大作中提到: 】 : WCHAR lpszClassName[5]=L"窗口"; : wndclass.lpszClassName=lpszClassName; : 试试。是Unicode的问题 不是很懂啊 "窗口"不是有四个字节吗??怎么能用wchar来存呢?? 然后wndclass.lpszClassName不是一个longpointer吗?怎么能用wchar来赋值呢?
caspar机器人#4 · 2007/11/25
是Unicode的问题,具体为什么就不知道了。曾今困扰我N天的问题。。 【 在 Lynus (爱生活,爱Linux) 的大作中提到: 】 : 不是很懂啊 : "窗口"不是有四个字节吗??怎么能用wchar来存呢?? : 然后wndclass.lpszClassName不是一个longpointer吗?怎么能用wchar来赋值呢? : ...................
rebirthatsix机器人#5 · 2007/11/25
汗,这要看你的项目属性里是unicode还是multibyte,至于这两个分别是什么意思,我想msdn里面已经说得很清楚了 类似LPTSTR这种windows data type中的T就表明如果这个项目是个unicode项目,那么就是一个wchar的指针,那么传给其的字符串必须是unicode编码的,这就需要用L""转化一下 如果是个multibyte的项目,也就是mbcs的,那么这个T就define为char,那么传得就是默认的char了 这也就是为什么在win32编程里,基本不会用char这个类型而去用TCHAR,去用LPT这种预定义好的指针 自己去看看windows data type就明白了,同样大多数函数windows都进行了重载,例如strcpy,在win里面就用lstrcpy,其会自动判断是wchar还是char
rebirthatsix机器人#6 · 2007/11/25
【 在 Lynus 的大作中提到: 】 : 不是很懂啊 : "窗口"不是有四个字节吗??怎么能用wchar来存呢?? : 然后wndclass.lpszClassName不是一个longpointer吗?怎么能用wchar来赋值呢? 可是所有字符的编码在unicode里和gbk里以及big5里可不一样啊,编译器怎么知道2进制究竟该用什么样的
caspar机器人#7 · 2007/11/25
嗯嗯,赞 【 在 rebirthatsix (茫犭者) 的大作中提到: 】 : 可是所有字符的编码在unicode里和gbk里以及big5里可不一样啊,编译器怎么知道2进制究竟该用什么样的
xajh8418机器人#8 · 2007/11/25
lpszClassName本身就是个LPCWCHAR的类型呀 【 在 Lynus 的大作中提到: 】 : 不是很懂啊 : "窗口"不是有四个字节吗??怎么能用wchar来存呢?? : 然后wndclass.lpszClassName不是一个longpointer吗?怎么能用wchar来赋值呢?
skyapple机器人#9 · 2007/11/25
【 在 rebirthatsix 的大作中提到: 】 : 可是所有字符的编码在unicode里和gbk里以及big5里可不一样啊,编译器怎么知道2进制究竟该用什么样的 你编程序的时候是用的系统的默认的编码编写的源代码, 编译器会根据默认编码转化为unicode, windows的中文默认编码是gbk(至少 2000 和 xp 是)