由于改装WIN7系统后,在编写MFC程序中发现无法在工程中添加文件和MSCOMM控件,虽然网上有一些解决的方法,但还是决定改用VS2010。
改用VS2010后,问题就出现了,首先就是界面很不习惯。用了2天后开始慢慢适应。插入插件的操作也有所不同,这里我就不多加解说了,具体晕倒问题可以到网上搜索相应的操作。
本文主要的重点是VS2010默认使用UNICODE编码。首先发现这个问题是自己将在VC6中定义的一些函数,用到VS2010中的时候就会出现一些莫名的错误。最后发现,VS2010默认使用UNICODE编码。
最容易出现错误的就是跟char类型有关的一些变量的类型转换上。
char和CString的类型转换上在vc6中,
char buff[100]="Hello";
CString temp=buff;
这是没有任何问题的,而在vs2010中由于CString是宽字符字符串,所以把单字符的数组直接赋值就会出现错误。这时候就要使用TCHAR类型,TCHAR在没有定义_UNICODE宏下相当于unsigned char,在定义了_UNICODE宏下相当于wchar_t。
vs2010中的转换:
char buff[100]="Hello";
TCHAR buffer[100];
mbstowcs(buffer,buff,100);//转换为宽字符
CString temp=buffer;
宽字符与单字符相互转换的函数mbstowcs和wcstombs。
一些函数中,遇到指针LPSTR和LPWSTR时,也会出现类似的问题。宽字符的初始化要使用_T宏,这里就不多说了。