2012-12-19 4 views
8

Jestem całkiem nowy w programowaniu Windows. Próbuję pobrać nazwę okna.GetWindowText z char []

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

Potrzebuję użyć char [], ale daje mi błąd niewłaściwego typu.
Z tego, co przeczytałem, LPWSTR jest rodzajem char *.

Jak korzystać z char[] z GetWindowText?

Wielkie dzięki!

+0

LPWSTR oznacza Długi wskaźnik do szerokiego łańcucha, tj. Ciąg złożony z szerokich znaków, typu 'wchar_t', a nie' char'. –

+0

Mówisz, że musisz użyć char [] ", jaki jest twój powód? –

+0

NewName jest używane z strcmp. – MaT

Odpowiedz

11

Prawdopodobnie kompilacji projektu Unicode, więc można:

  • Jawne wywołanie wersji ANSI funkcji (GetWindowTextA) lub
  • Zastosowanie wchar_t zamiast char (LPWSTR jest wskaźnikiem do wchar_t)
1

Do nowoczesnego programowania systemu Windows (co oznacza, po 2000 roku, kiedy Microsoft wprowadził warstwę Unicode dla okna s 9x), zdecydowanie lepiej jest użyć "Unicode", który w C++ w Windows oznacza użycie wchar_t.

Oznacza to, że należy użyć wchar_t zamiasti użyć std::wstring zamiast std::string.

Pamiętaj, aby zdefiniować UNICODE przed dodaniem <windows.h>. Dobrym pomysłem jest również zdefiniowanie NOMINMAX i STRICT. Chociaż obecnie ten drugi jest domyślnie zdefiniowany.

1

Podczas wywoływania interfejsów API systemu Windows bez określania jawnej wersji przez dołączanie A (ANSI) lub W (szeroki znak), należy zawsze używać TCHAR. TCHAR zostanie odwzorowany na prawidłowy typ w zależności od tego, czy UNICODE jest d, czy nie.