Вопрос по c++, winapi, visual-studio-2010 – Почему в окне сообщения C ++ отображается китайское сообщение [дубликаты]
Possible Duplicate:
Why does my simple C++ GUI application show a message box in Chinese?
Я реализовал этот блок кода, как показано ниже в Visual C ++:
int nResult=MessageBox(NULL,
(LPCWSTR)"An example of Cancel,Retry,Continue",
(LPCWSTR)"Message Box!",
MB_ICONWARNING|MB_ABORTRETRYIGNORE);
однако, что бы я ни пытался, он всегда показывает окно сообщения на китайском! Поэтому я просто хочу попросить любое решение для моей проблемы и почему здесь есть китайское сообщение. Спасибо вам!
образом:
int nResult=MessageBox(NULL,
L"An example of Cancel,Retry,Continue",
L"Message Box!",
MB_ICONWARNING|MB_ABORTRETRYIGNORE);
В C ++ строковые литералы Юникода имеют префиксL
, Если вы не указали префикс, приведение к «строковой константе Юникода»; не поможет и приведет к неправильной интерпретации местоположения памяти.
(LPCWSTR)
Error: User Rate Limit ExceededisError: User Rate Limit ExceededL
Error: User Rate Limit ExceededinterpretError: User Rate Limit ExceededhereError: User Rate Limit Exceeded
ение, на которое указывает. Это не то, что делают приведения C ++. Они просто сообщают компилятору, что указатель указывает на новый тип. Чтобы указатьширокий буквальныйиспользоватьL
перед цитатами (илиновые строковые литералы если ваш компилятор их поддерживает). И избавиться от актерского состава, это просто заслоняет ошибку.
вы ввели строку ASCII в строку UNICODE. Вместо этого используйте макрос _TEXT (& quot; Ваша строка & quot;).
Вы не можете просто интерпретировать байты ASCII как строку UNICODE, иначе произойдет что-то плохое.
Редактировать: Также, если вы хотите строки ASCII, вы можете явно вызвать MessageBoxA () или изменить настройки многобайтовых символов в настройках вашего проекта.