已经开始使用evc了2天了,不由得感慨,微软还是太老了,做的东西不如以前啦。
由于对vc的熟悉,加之媒体到处宣传evc用的mfc和vc的一样兼容,所以先在vc6下做好
程序,然后移植到evc下编译,昨天下午一编译,简直气晕!所有使用cstring的地方全
报错, strcpy,atoi,atof,全报错。仔细察看,原来是unicode的问题,evc将cstring编译
成unicode格式,ansi字符的函数strcpy等对cstring不能转化成const char* 以及char*.
希望evc将cstring编译成ansi字符,所以将编译的开关_unicode,unicode去掉,结果依旧。
简直头大!用#ifdefe unicode #error defined unicode#endif 插入stdafx.h中,
发现在#inlude afx.h文件中定义了宏unicode,继续跟踪,最后发现在wce.h头文件中直接定义,
也没有使用开关,看来这步路被封死了。想将cstring换成其他类,比如cmystring,但是和界面
的接口已定义好,很多参数使用的cstring,怎么办?已经晚上9点了,怎样早回家?最后决定将char
定义的数组全换成tchar, 将strcpy换成lstrcpy, atoi换成 _wtoi,可是atof死活找不到wtof
这个函数。上网上查询,没有找到,倒是确定windows ce只能用unicode.哎!5年前自己一直这
样使用,没想到今天载到这个问题上,看来我是对嵌入式开发有误解,不是省内存的就好!
继续解决atof,我查阅帮助,f_crt是转换,但是没办法将款字符串转换成float,峰回路转,想起
sscanf可以将字符中的数据可格式化,用swscaf不就可以了吗!最后是unicode转换成
ansi字符,ansi字符转换成unicode的问题,终于找到multibytetowidechar和widechartomultibyte
两个函数解决。
通过这两天evc的使用,有以下体会:
以后在任何平台尽量使用兼容的类型,如使用tchar,不要用char,用int,不要用int.这样即使
在非windows平台,也可以使用typedef tchar char;来解决。
mfc的cstring可以说是string类中最烂的一个,尽量不要使用。如果不使用cstring,那使用什么?
evc不支持stl,看来还是自己写一个string类代替cstring的好!
最后一个,国际化问题时时要注意,不然要吃亏幺。