Родились сегодня:
lSemperFi


Лидеры рейтинга

ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

391

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Советник

379

Россия, Санкт-Петербург


ID: 401888

puporev

Профессор

215

Россия, Пермский край


ID: 400669

epimkin

Профессионал

111


ID: 405338

vovaromanov.jr

1-й класс

103


ID: 242862

Hunter7007

Мастер-Эксперт

29

Россия, Омск


ID: 137394

Megaloman

Мастер-Эксперт

25

Беларусь, Гомель


8.10.2

13.10.2021

JS: 2.10.2
CSS: 4.6.0
jQuery: 3.6.0
DataForLocalStorage: 2021-10-27 22:16:01-standard


Создание программ на языках C и C++.

Администратор раздела: CradleA (Мастер-Эксперт)

Консультация онлайн # 109155

Раздел: С / С++
Автор вопроса: Chip
Дата: 13.11.2007, 03:35 Консультация закрыта
Поступило ответов: 4

Уважаемые эксперты. Хелп. Упорно не понимаю почему не хочет компилироваться код.

Ошибка
error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'const char [22]' to 'LPCWSTR'

Вижуал Студио 2005

Грандмерси

Приложение:

Ответ # 193552 от CruelHity
Здравствуйте, Chip!
Вопрос вы конечно задали чут не туда!
вам надо в системное программирование!
Но у вас ошибка переводе с кодировкой в Unicode! может вы где-то поставили в параметрах проэкта кодировку Unicode! посмотрите! У меня работает нормально, без ошибок!
Попробуйте изменить текст "Простейшая программа!" на "Simple Application" и должно заработать!!!
или пропишите так
MessageBoxW(NULL,(LPCWSTR) "Простейшая программа!",(LPCWSTR)"WinAPI App", 0);
советую вам скачать книгу
"Джеффри РИХТЕР
Создание эффективных WIN32-приложений
с учетом специфики 64-разрядной версии Windows"
там хорошо описываеть unicode!
Удачи!

CruelHity

Посетитель
13.11.2007, 03:55
Ответ # 193581 от Vas177
Здравствуйте, Chip!

Добавьте L перед строками, чтобы сказать компилятору, что это UNICODE-строка

MessageBox(NULL, L "Простейшая программа!", L "WinAPI App", 0);

Vas177

Посетитель
13.11.2007, 09:50
Ответ # 193586 от Алексей Демаков
Здравствуйте, Chip!

Ответ весьма просто находится гуглом.

Цитирую:

Дело в том, что 2005 студия по умолчанию использует юникод (LPWSTR)
, поэтому либо в основных настройках ставишь Use Unicode Character Set. А лучше
LPTSTR szClassName[ ] = TEXT("WindowsApp");
этим ты продоставляешь компилятору самому подставить нужный тип в зависимости от настроек.
для юникода это будет
LPWSTR classname[] = L"tralyalya";
для мультибайтного
LPSTR classname[] = ''tralyalya';

Алексей Демаков

Посетитель
13.11.2007, 09:57
Ответ # 193755 от Титов Михаил Анатольевич
Здравствуйте, Chip!

Проблема в использовании студией кодировки UNICODE. Поставте в параметрах прооекта

Configuration Properties\General\Character Set = Not Set

и всё скомпилируется.

Титов Михаил Анатольевич

Посетитель
14.11.2007, 05:22
Мини-форум консультации # 109155
Chip

1

= общий =    13.11.2007, 17:10

А вот еще вопрос Почему в одной программе при создании главного окна HWND hWnd = CreateWindow(lpzClass, TEXT("Chipik Window"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, x, y, 300, 300, NULL, NULL, hInstance, NULL); компилятор не находит ошибок, а при создании кнопки чуть ниже CreateWindow("button", TEXT("Press me"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 10, 10, 80, 30, hWnd, (HMENU)10000, hInstance, NULL); ругается что "cannot convert parameter 2 from 'const char [7]' to 'LPCWSTR'"

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 162

Gluck

9-й класс

Рейтинг: 81

Коцюрбенко Алексей Владимирович

Старший модератор

Рейтинг: 70

CradleA

Мастер-Эксперт

Рейтинг: 1

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0

Асмик Гаряка

Советник

Рейтинг: 0