天天看點

vc6.0程式向VS2005移植

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版。

然而在開發過程中可以顯式指定。

繼續閱讀