Posted on 2008-04-16 15:20
orlando 閱讀(1846)
評論(0) 編輯 收藏 引用
VS2005中開發(fā)程序時,默認的字符集是Unicode。所以如果程序中使用字符串常量時一定要顯示轉(zhuǎn)換為Unicode型,否則編譯時報錯。如:
HDC hScrDC = CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL); //為屏幕創(chuàng)建設備描述表
這句如果寫成:
HDC hScrDC = CreateDC("DISPLAY"),NULL,NULL,NULL);
編譯時提示錯誤如下:
error C2664: 'CreateDCW' : cannot convert parameter 1 from 'const char [8]' to 'LPCWSTR'
根據(jù)這個錯誤提示我們可能會將此句改為:
HDC hScrDC = CreateDC((LPCWSTR)"DISPLAY",NULL,NULL,NULL);
這句雖然能通過編譯,但最終結(jié)果卻不正確(hScrDC 的值為 0)!
正確的做法有二:
一、如果你希望程序支持Unicode字符集,則可以將程序改為:
HDC hScrDC = CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
二、如果你不希望程序支持Unicode字符集,則不用改動程序。更改項目設置就可以了。
項目菜單--項目屬性(最后一個)--配置屬性--常規(guī)--項目默認值--字符集,將使用Unicode字符集改為未設置即可。
配置屬性 -> C/C++ -> 預處理器 -> 預處理器定義
看看有沒有 UNICODE/_UNICODE, 有的話就去掉, 再看看程序中有沒有 define 這些東西.