2011-01-31 2 views
0

Сценарий 1 Я создал пустой проект vC++, добавив к нему файл c и #include. Теперь в моей функции main(), если я наводил указатель мыши на функцию MessageBox, он разрешает MessageBoxA.MessageBox не разрешает MessageBoxW?

Сценарий 2 Я создаю проект windows win32 теперь здесь MessageBox разрешает MessageBoxW ??? Я проверил свойства проекта -> c/C++ -> свойство препроцессора там, я нашел WIN32, поэтому я сделал это в своем предыдущем проекте, но все тот же результат.

Что я должен делать. Конечно, я могу использовать проект последнего типа, но считаю меня одним упрямым новичком, который хочет узнать бит.

спасибо.

ответ

3

по умолчанию «Набор символов» свойство для нового пустого проекта «Multi-Byte», что означает, что препроцессор не будет определять символ UNICODE препроцессора и так MessageBox будут заменены MessageBoxA.

Для проекта Win32, свойство по умолчанию «Набор символов» является «Unicode», что означает, что препроцессор будет определять UNICODE и, таким образом, MessageBox будет заменен MessageBoxW.

См. Статью Working with Strings MSDN для введения.

3

Это определяется наличием или иным образом условного обозначения UNICODE, которое определяется конфигурацией проекта: либо Unicode, либо многобайтовым набором символов.

1

Проект + Свойства, Свойства конфигурации, Общие. Это свойство набора символов. Создавайте только пустые проекты после того, как вы выяснили, как все работает. Хотя самый быстрый способ учиться - это сделать все ошибки.

1

Общая рекомендация: всегда используйте MessageBoxW(). Существует очень мало оснований для компиляции вашей программы с настройкой MBCS, что буквально означает «текстовое нарушение».

+1

Лучше написать MessageBox и разрешить условные обозначения для отображения на MessageBoxW - он читает гораздо приятнее таким образом –

+0

+1, MBCS достаточно близко. –

+1

@david Позвольте мне не согласиться. Неправильный код должен выглядеть неправильно как можно быстрее. –

Смежные вопросы