永发信息网

visual 2008运行以前的代码需要注意什么,或需要改动哪里?

答案:3  悬赏:60  手机版
解决时间 2021-02-15 20:18
  • 提问者网友:别再叽里呱啦
  • 2021-02-15 00:19
就是说,用现在的编辑器,运行以前的代码,需要将以前的代码哪些位置改动,一般是类型,头文件的要改动,字符宽窄等,我就是在写《深入浅出MFC》第二版,里面的代码是老代码,不知道用新的编辑器如何改,提示错误一大堆,但是都是差不多的,应该是编辑器问题,大虾给给意见,如何做。
哪些提示一般是:MLTITHRD.cpp(32) : error C2731: “WinMain”: 无法重载函数
1> .\MLTITHRD.cpp(30) : 参见“WinMain”的声明
1>.\MLTITHRD.cpp(45) : error C2440: “=”: 无法从“HANDLE”转换为“HINSTANCE”
1> 从“void*”到指向非“void”的指针的转换要求显式类型转换
1>.\MLTITHRD.cpp(46) : error C2664: “LoadIconW”: 不能将参数 1 从“HANDLE”转换为“HINSTANCE”
1> 从“void*”到指向非“void”的指针的转换要求显式类型转换
1>.\MLTITHRD.cpp(48) : error C2440: “=”: 无法从“HGDIOBJ”转换为“HBRUSH”
1> 从“void*”到指向非“void”的指针的转换要求显式类型转换
1>.\MLTITHRD.cpp(49) : error C2440: “=”: 无法从“const char [11]”转换为“LPCWSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>.\MLTITHRD.cpp(50) : error C2440: “=”: 无法从“const char [12]”转换为“LPCWSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>.\MLTITHRD.cpp(61) : error C2664: “CreateWindowExW”: 不能将参数 2 从“const char [12]”转换为“LPCWSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>.\MLTITHRD.cpp(63) : error C2664: “ShowWindow”: 不能将参数 1 从“HANDLE”转换为“HWND”
1> 从“void*”到指向非“void”的指针的转换要求显式类型转换
1>.\MLTITHRD.cpp(181) : error C2664: “GetClientRect”: 不能将参数 1 从“HANDLE”转换为“HWND”
1> 从“void*”到指向非“void”的指针的转换要求显式类型转换
1>.\MLTITHRD.cpp(182) : error C2664: “GetDC”: 不能将参数 1 从“HANDLE”转换为“HWND”
1> 从“void*”到指向非“void”的指针的转换要求显式类型转换
1>.\MLTITHRD.cpp(195) : error C3861: “sprintf”: 找不到标识符
1>.\MLTITHRD.cpp(196) : error C2664: “lstrlenW”: 不能将参数 1 从“char [80]”转换为“LPCWSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>.\MLTITHRD.cpp(196) : error C2664: “TextOutW”: 不能将参数 4 从“char [80]”转换为“LPCWSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>.\MLTITHRD.cpp(197) : error C2664: “wsprintfW”: 不能将参数 1 从“char [80]”转换为“LPWSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>.\MLTITHRD.cpp(198) : error C2664: “lstrlenW”: 不能将参数 1 从“char [80]”转换为“LPCWSTR”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
1>生成日志保存在“file://e:\123456\mlt\mlt\Release\BuildLog.htm”
1>mlt - 17 个错误,0 个警告
等等。。。。。。。
分是大大的有啊,只要解决了,加50.
最佳答案
  • 五星知识达人网友:酒者煙囻
  • 2021-02-15 01:00
问题1
“WinMain”: 无法重载函数
这里写的很清楚
MLTITHRD.cpp(30) : 参见“WinMain”的声明
一般是函数声明此函数时,参数,返回类型不一致导致编译器认为
你是在重载函数,但是这个函数是入口函数是不允许重载的
无法从“HANDLE”转换为“HINSTANCE”
这是因为数据类型不一致,又没有合适的对操作符进行重载
这个要看具体代码才能解决
LoadIconW的第一个参数类型是HINSTANCE
一般默认填NULL,要调用自己建立的资源里的icon就输入程序实例
的HINSTANCE
第四个无法从“HGDIOBJ”转换为“HBRUSH”
这个可以做转换的(HBRUSH)getstockobject(white_brush)
第五个无法从const char [11]”转换为“LPCWSTR”
左边是c字符数组 右边是宽字符串指针,二种类型也不一样
TEXT("短字符")这样对常量字符串进行转换为宽字符
如果不是常量字符串,需要使用函数来转换
第七个CreateWindowExW这中带W后缀的是宽字符版本的函数
在使用时参数都需要使用宽版本的参数就是在前面加上TEXT("")
第八个ShowWindow需要的参数是HWND窗口句柄不是HANDLE对象句柄
GetClientRect与GetDC都是这样的
第十一个sprintf找不到操作符是因为没有对应的头文件
就是要在文件的预定义的头文件里加上#include这句
第十二lstrlenW是宽版本的参数要加TEXT("要转换的字符串")
后面的都是同一个原因
vs2008加入了名字空间.主要输入输出都使用std空间
一般情况下代码移上来都需要改改
对应的编译选项也很多,使用unicode编译时函数版本为宽版本
在不使用unicode时使用窄版本
全部回答
  • 1楼网友:鸽屿
  • 2021-02-15 02:42
呃~ 以我个人的经验来看,主要是ACSII和Unicode编码的问题。 对于明文字符串,用_T()宏就可以搞定。 不要直接用char,要用TCHAR宏来定义字符(串)变量。 另外,如果用Unicode编码,对应的函数也要用W版本的。 希望能对你有所帮助。
  • 2楼网友:低音帝王
  • 2021-02-15 02:22
这是三层架构里的一个类 他将数据库中的表映射成为c#中的类 比如表名对应类名 字段对应类的属性(或成员变量) 一条记录就是这个类的实例 这种类就叫做公共类 三层架构中的每一层都会使用到这个类 因此它是一个公共类 相对于公共类 三层架构中的数据访问层只对业务逻辑层开放 业务逻辑层只对表示层开放 他们就不是公共类了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯