2012-12-19 18 views
8

Tôi khá mới đối với lập trình Windows. Tôi đang cố gắng lấy tên của một cửa sổ.GetWindowText with char []

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

Tôi cần sử dụng ký tự [] nhưng nó cho tôi lỗi sai.
Từ những gì tôi đọc, LPWSTR là một loại char *.

Tôi làm cách nào để sử dụng số char[] với GetWindowText?

Cảm ơn rất nhiều!

+0

LPWSTR có nghĩa là Long Pointer to Wide String, tức là một chuỗi được tạo thành từ các ký tự rộng, kiểu 'wchar_t', không phải' char'. –

+0

Bạn nói bạn 'cần phải sử dụng một char []', lý do của bạn là gì? –

+0

NewName được sử dụng với strcmp. – MaT

Trả lời

11

Bạn đang có lẽ là biên soạn một dự án Unicode, vì vậy bạn có thể:

  • Rõ ràng gọi phiên bản ANSI của hàm (GetWindowTextA), hoặc
  • Sử dụng wchar_t thay vì char (LPWSTR là một con trỏ đến wchar_t)
1

Để lập trình Windows hiện đại (có nghĩa là, sau năm 2000 khi Microsoft giới thiệu Lớp cho Unicode cho cửa sổ s 9x), bạn tốt hơn hết là sử dụng "Unicode", trong C++ trong Windows nghĩa là sử dụng wchar_t.

Tức là, sử dụng wchar_t thay vì char và sử dụng std::wstring thay vì std::string.

Hãy nhớ xác định UNICODE trước khi bao gồm <windows.h>. Bạn cũng nên xác định NOMINMAXSTRICT. Mặc dù ngày nay cái sau được định nghĩa theo mặc định.

1

Khi gọi Windows API mà không chỉ định phiên bản rõ ràng bằng cách nối thêm A (ANSI) hoặc W (char rộng), bạn nên luôn sử dụng TCHAR. TCHAR sẽ ánh xạ tới đúng loại tùy thuộc vào việc UNICODE#define d hay không.