2010-01-17 22 views
7

Tại sao ứng dụng C++ GUI đơn giản của tôi lại hiển thị một hộp thông báo bằng tiếng Trung?

Oh như đối với toàn bộ (LPCWSTR) điều đúc:. Nó sẽ không biên dịch, trừ khi tôi đưa những người trong Nó đã cho tôi thông báo lỗi này:

Lỗi 1 lỗi C2664: 'MessageBoxW' : không thể chuyển đổi thông số 2 từ 'const char [22]' sang 'LPCWSTR'

+0

Tôi không biết tại sao, nhưng tiêu đề câu hỏi của bạn đã làm cho tôi LMFAO. : 'D –

+0

lol. thật ngọt ngào. – mpen

+0

Tôi tự hỏi những gì các nhân vật này có nghĩa là ... – liori

Trả lời

19

Đặt mặt trước L của chuỗi của bạn để tạo thành chuỗi rộng. L "Goodbye cruel World"

Sau đó, bạn sẽ không cần dàn diễn viên.

Bạn cũng có thể sử dụng macro TEXT ("") để tạo chuỗi unicode hoặc chuỗi ascii tùy thuộc vào cài đặt cấu hình của bạn.

Lý do bạn nhìn thấy tiếng Trung là MessageBox đang diễn giải chuỗi ascii dưới dạng unicode.

+0

Yup. Không giống như phần còn lại của thế giới, mã Unicode thông qua mã hóa UTF-8, do đó các ký tự ASCII đơn giản chỉ hoạt động, Microsoft đã quyết định thực hiện toàn bộ điều WCHAR UTF-16. Nó làm cho mã khá không di động và khóa nó vào thế giới của Microsoft, đó là tất nhiên những gì họ muốn. (Có nhiều cách xung quanh điều đó, nhưng họ không rõ ràng với lập trình viên mới làm quen). –

+0

UTF-8 không tồn tại khi NT được tạo ra (Đó là lý do họ đang sử dụng) Bạn có thể tìm thấy một bài viết về nó @ http : //blogs.msdn.com/michkap/ – Anders

0

Đoán mạnh của tôi là tệp nguồn của bạn có mã hóa sai. Bạn có thể kiểm tra xem nó được lưu trong một số hương vị Unicode, rất có thể là UTF-16?

+0

Chắc chắn ... Làm thế nào để tôi làm điều đó? –

+0

Tôi không biết bạn đang sử dụng IDE nào, nhưng bạn nên có tùy chọn "tập hợp ký tự" trong hộp thoại "lưu dưới dạng ..." hoặc ở đâu đó trong menu của bạn. –

6

Bạn đã có câu trả lời, nhưng đây là một ví dụ tốt về lý do tại sao bạn nên sử dụng tránh phôi. Có, một diễn viên sẽ nhận được mã của bạn để biên dịch, nhưng trừ khi bạn hiểu những gì đang xảy ra, rất có thể bạn đã tạo ra một lỗi.

Nói chung, 3 quy tắc của tôi đúc là:

  1. Xin chớ từ bỏ (sửa code).
  2. Không truyền (điều chỉnh loại của bạn để dừng sử dụng dàn diễn viên)
  3. Được rồi bỏ, nhưng hãy xem lại quyết định của bạn vào ngày mai và xem bạn có thể làm # 1 hoặC# 2 hay không.
Các vấn đề liên quan