請教一下,我用VS2015開發MFC應用程式,但是現在里面有SetDlgItemText,SetDlgItemTextA,setDlgItemTextW這幾個函式,請教一下怎么使用?怎么選擇?這幾個函式之間有什么差別嗎?
uj5u.com熱心網友回復:
字符編碼不同uj5u.com熱心網友回復:
A表示ANSI字符,W表示WIDE字符。沒有這個真正的函式SetDlgItemText,但是你用的時候用這個,他會根據你的程式采用哪種字符集,去呼叫SetDlgItemTextA, SetDlgItemTextW 其中的一個。 你跟一下看到宏定義就知道了。使用的話,隨便搜一下就行了。SetDlgItemText(IDC_EDIT_TEST,_T("Hello world?NO,World hello"));uj5u.com熱心網友回復:
先弄清楚漢字的GBK編碼和Unicode編碼具體是咋回事。比如:啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55
uj5u.com熱心網友回復:
SetDlgItemText, SetDlgItemTextA, SetDlgItemTextW三者的關系好比:
人,中國人,外國人
或:
人、男人、女人
這三個對應的字符編碼分別是:
TCHAR、char、wchar_t / WCHAR
如果你要獲取文字到 char 陣列,顯式呼叫 SetDlgItemTextA。
如果你要獲取文字到 WCHAR 陣列,顯式呼叫 SetDlgItemTextW。
如果你要獲取文字到 TCHAR 陣列,呼叫 SetDlgItemText。
TCHAR 是個不確定型別,可能是 char 或 WCHAR。
SetDlgItemText 是個宏名稱,可能定義為 SetDlgItemTextA 或 SetDlgItemTextW。
取決于 Visual Studio 專案設定為多位元組編碼,還是 Unicode 編碼。
SetDlgItemText 存在的意義,是與 TCHAR 的存在一樣。
通過宏定義,使得 SetDlgItemText 和 TCHAR 能根據專案編碼設定同步切換到對應編碼。
uj5u.com熱心網友回復:
Windows API 大多都提供了兩套不同字符編碼的版本。這樣做的目的,是讓你的代碼可以輕松移植為 Unicode 工程。
uj5u.com熱心網友回復:
win32 api 一般分兩種 A 和W結尾的。 對應編碼ansi/ unicode通常A 的api最終都內部轉換了ansi為unicode. 再呼叫了W的api
uj5u.com熱心網友回復:
#ifdef _UNICODE
#define SetDlgItemText SetDlgItemTextW
#else
#define SetDlgItemText SetDlgItemTextA
#endif
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/81905.html
標籤:界面
上一篇:VS2010 C++開發mysql資料庫,獲取行陣列如何賦給字串
下一篇:串口問題
