2012-12-19 23 views
8

我對Windows編程頗爲陌生。我正在嘗試檢索窗口的名稱。GetWindowText char []

char NewName[128]; 
GetWindowText(hwnd, NewName, 128); 

我需要使用一個char [],但它給了我錯誤類型的錯誤。
從我讀到的,LPWSTR是一種char *。

如何使用char[]GetWindowText

非常感謝!

+0

LPWSTR表示指向寬字符串的長指針,即由寬字符組成的字符串,'wchar_t'類型,而不是'char'。 –

+0

你說你需要使用char []',你的理由是什麼? –

+0

NewName與strcmp一起使用。 – MaT

回答

11

你可能編譯一個Unicode項目,所以您可以:

  • 顯式調用函數(GetWindowTextA)的ANSI版本,或代替
  • 使用wchar_tcharLPWSTR是指向wchar_t
1

對於現代Windows編程(也就是說,在2000年之後,微軟推出了Layer for Unicode for Window s 9x),使用「Unicode」,這在Windows的C++中意味着使用wchar_t

也就是說,使用wchar_t代替char,並使用std::wstring代替std::string

記得在包括<windows.h>之前定義UNICODE。定義NOMINMAXSTRICT也是一個好主意。雖然現在後者是默認定義的。

1

當通過附加A(ANSI)或W(寬字符)指定Windows API而未指定明確版本時,應始終使用TCHARTCHAR將根據UNICODE是否爲#define d映射到正確的類型。