vc6.0編譯成功的程式要移植到VS2005中運作 如果不加修改 會出現很多錯誤
問題的原因是字元串ANSI和Unicode編碼的差別,
VC6與VS2003等預設使用ANSI編碼,而VS2005及VS2008預設采用Unicode.
簡而言之 ANSI用1個位元組表示字元,Unicode用2個位元組表示1個字元.
若想要你的代碼在VS2005中編譯通過,3中方法:
1.可修改編碼選項:項目——屬性——配置屬性-——正常-——字元集——Use Multi-Byte Character Set
2.把你字元串定義為寬字元串,例如:
------WCHAR szName[128] ;
------CreateWindow ( L"這裡為類名",…… ) ; // 這裡L為寬字元串宏定義
3.顯式指定API版本:把WNDCLASS改為WNDCLASSA,把CreateWindow改為CreateWindowA。
對于Win32中與字元串相關的API一般有兩個版本Ansi版和Unicode版。
例如CreateWindowA和CreateWindowW。
通常在使用過程中不顯式指定,如果在VC6中使用CreateWindow則編譯器就使用A版,如果在VS2005中使用CreateWindow則編譯器就使用W版。
然而在開發過程中可以顯式指定。