PDA

View Full Version : hỏi về "visual studio 2005"???



biettimdau
19-09-2007, 19:42
Cho tớ hỏi: Khi tớ viết visual C++ bằng VS2005 thì nó báo lỗi:

g:\study_vc++\area\area\areadlg.cpp(191) : error C2664: 'CWnd::SetWindowTextW' : cannot convert parameter 1 from 'const char [7]' to 'LPCTSTR'

Có bạn nào biết giúp tớ với. Nhân tiện có bạn nào có hướng dẫn VS2005 cho Visual C++ thì cho mình xin với.Xin cám ơn!

sutuluoi7777
19-09-2007, 21:20
thì là lỗi không thể chuyển kiểu từ mảng char độ dài 7 sang kiểu con trỏ chuỗi chứ sao nữa, chắc trong code đâu đó có 1 phép gán bậy rồi

nguyen.the.vinh
19-09-2007, 22:26
Đây là do unicode rồi :)

jiSh@n
20-09-2007, 00:16
Đây là do unicode rồi :)

Sao lại có Unicode ở đây nhỉ :blink:

kooltech
20-09-2007, 01:53
Sao lại có Unicode ở đây nhỉ :blink:

Thì đúng là unicode rồi còn gì! Ông này mấy hôm trước thấy cãi nhau cái gì về C/Delphi to lắm mà?

Hayz dùng _T("chuỗi") sẽ hết báo lỗi.

biettimdau
20-09-2007, 22:40
lỗi unicode là thế nào vậy? Tớ mới học nên không biết, bạn có thể nói rõ hơn được không?

eXecutive
21-09-2007, 18:55
Windows sử dụng hàm SetWindowText thể thay đổi tiêu đề cho 1 cửa sổ, tuy nhiên hàm này có 2 hàm con.

- SetWindowTextA("<ANSI>"); Như vậy dữ liệu đưa vào là chuổi ANSI.
- SetWindowTextW(_T("<UNICODE>")); Chuỗi đưa vào thêm MACRO _T sẽ được chuyển thành mã UNICODE (tức là 2byte 1 ký tự).

Ở VS2003 trở về trước mặc định khi gọi hàm SetWindowText thì sẽ tự động gọi SetWindowTextA. Còn VS2005 trở về sau này có lẽ là ngược lại.

- MessageBox cũng vậy (MessageBoxA và MessageBoxW). do đó ai lt 2005 thì lưu ý.

biettimdau
23-09-2007, 21:42
ok, thanks các bạn giúp đỡ.