Попробуйте изменить код следующим образом:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, L"Goodbye, cruel world!", L"Note", MB_OK);
return 0;
}
Если это работает из-за того, что вам не хватает какого-то заголовка, указывающего на правильный API, вы, похоже, вызываете MessageBoxW (версия Unicode) со строкой ANSI. Если это не просто тест, а вы начинаете писать настоящую программу, подумайте, какой тип символов вы хотите использовать (обычно это флаг прекомпилятора). Затем используйте макрос _T(
, чтобы ваши литералы были совместимы с unicode / ansi.
Редактировать из комментария @Benoit:
При запуске нового проекта с VS 2008/10 по умолчанию устанавливается набор символов Юникода.