游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2508|回复: 3

关于vc6.0和vs2010 默认win32 project不同引发的问题

[复制链接]

17

主题

100

帖子

107

积分

注册会员

Rank: 2

积分
107
发表于 2010-9-10 23:38:00 | 显示全部楼层 |阅读模式
关于vc6.0和vs2010 默认win32 project不同引发的问题
唉,实在不想用回vc6.0
我是在vs2010开了两个文件:1。默认提供的win32 project 2.以前vc6.0转过来的project
ATOM MyRegisterClass(HINSTANCE hInstance)
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
是一样的但其中细节又不一样,导致编译也会出错
vs2010 have----INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

移植导致的错误:
wcex.lpszClassName        = "canvas";
error C2440: '=' : cannot convert from 'const char [7]' to 'LPCWSTR'

hWnd = CreateWindow("canvas", "绘图" , WS_OVERLAPPEDWINDOW,
                CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
error CreateWindowExW' : cannot convert parameter 2 from 'const char [7]' to 'LPCWSTR'

到底是怎么回事?为啥用vs2010开以前的vc6.0文件能编译,自己照写反而错了

1

主题

49

帖子

49

积分

注册会员

Rank: 2

积分
49
发表于 2010-9-11 08:55:00 | 显示全部楼层

Re:关于vc6.0和vs2010 默认win32 project不同引发的问题

把编译开关里的unicode调一下就好了...
或者在字符串前面加  L"canvas" 声明为宽字符...

17

主题

100

帖子

107

积分

注册会员

Rank: 2

积分
107
 楼主| 发表于 2010-9-11 23:29:00 | 显示全部楼层

Re:关于vc6.0和vs2010 默认win32 project不同引发的问题

还是错误啊

3

主题

187

帖子

217

积分

中级会员

Rank: 3Rank: 3

积分
217
发表于 2010-9-12 14:27:00 | 显示全部楼层

Re:关于vc6.0和vs2010 默认win32 project不同引发的问题

记得VS从2005开始默认使用的都是UNICODE编码方式,2003以前包括VC6都是多字符集编码方式,UNICODE模式默认使用的带字符串参数的函数都是要宽字符集,也就是函数结尾带W的,你再仔细检查看看,如果是多字符集编码函数,函数结尾带A
W--Wide
A--Ansi
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-6 14:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表