Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > не пойму, что неправильно в MessageBox |
Автор: susanin 20.4.2007, 16:09 | ||
попробовал сделать MessageBox, но при компиляции выдались ошибки... написал вот так..
ошибка выдается следующая: error C2664: 'CWnd::MessageBoxW' : cannot convert parameter 1 from 'const char [17]' to 'LPCTSTR' в чем ошибка то???? |
Автор: scooper 20.4.2007, 17:31 |
Может на русский язык ругается! попробуй убрать |
Автор: dizzy1984 20.4.2007, 19:41 |
У тебя юникод стоит в настройках, убери его. Либо предваряй все строковые константы символом L |
Автор: susanin 20.4.2007, 23:29 |
dizzy1984 , а как юникод в настройках убрать? |
Автор: zkv 22.4.2007, 00:51 |
поиском по форуму |
Автор: Dude03 22.4.2007, 10:48 | ||
Вроде так
|
Автор: Earnest 23.4.2007, 10:02 |
Dude03, нет конечно, не путай новичка! Это придется делать в каждом файле. susanin, Юникод убирается в свойствах проекта, 100 раз обсуждалось, ищи по форуму. |
Автор: Rapalex 23.4.2007, 12:16 | ||
А я бы не советовал отключать уникод, мы уже в 21-м веке!!!!!!!!!!! Нутолько так написать:
В результате этот макрас сам поставил L если надо а не надо от него вреда не будет, и будет легко собтрать то уникод то не укод (мульти байт) приложения. |
Автор: Любитель 23.4.2007, 12:17 |
Earnest, надо какую нибудь тему по юникоду или прикрепить, или в шапку добавить ![]() |
Автор: zkv 23.4.2007, 12:43 |
согласен, заметил что в МСДН'овских сэмплах используется макрос TEXT() и определен он вроде также как и _T(), кто-нибудь знает в чем разница между ними? |
Автор: Любитель 23.4.2007, 13:00 |
zkv, отличие очень тонкое. У MS есть два макроса для юникода/неюникода: 1. UNCIDOE - PSDK (Platform SDK - Windows SDK) для WinAPI функций. 2. _UNICODE- в CRT (C Runtime) для всяких _tprintf, _tcsclen и пр. Для первого в winnt.h определяется макрос TEXT, именно он рекомендуется к использованию (так как фнукциями WinAPI пользуются чаще, хотя правда вряд ли кто-то будет определять юникод для одного и запрещать для другого ![]() Вот так. Когда в пропертях проекта ставим юникод - в команд-лайн компилера добавляется /DUNICODE и /D_UNICODE. Потому (дополнительно) явные дефайны не рулят - надо знать, что делаем и для чего. |
Автор: Rapalex 24.4.2007, 11:16 |
Любитель, спасибо, не знал, ещё думал в чём же разница. Только напрашивается вопрос, что такое CRT (C Runtime)? В смысле что мне с него идёт. |
Автор: Tectoder 25.4.2007, 23:38 |
CRT это набор библиотек с функциями языка C. |
Автор: Любитель 28.4.2007, 16:40 |
Tectoder, и? _tprintf, _tcslen - это мс-шное расширение CRT. Находятся они в msvcrxx.dll (MS Visual C Runtime). Точнее не они, а printf, wprintf и т. д. А это просто макросы, раскрываемые в printf/wprintf, etc. согласно #ifdef UNICODE. |
Автор: Любитель 28.4.2007, 19:07 |
Блин, сорри, не заметил. По цитате решил, что претензии к тому, что _tprintf и т. д. - не стандартная библиотека сей. |
Автор: DigitSphinx 29.4.2007, 15:09 |
Кстати на счет UNICODE вопросик такой , почему если его поменять на Multi-Byte (в настройках) то манифест не крепится к EXE’шнику, т.е. форма становится не в стиле XP |
Автор: Greeen 29.4.2007, 17:50 | ||
DigitSphinx, а ты посмотри в stdafx.h
Вот тебе и ответ |
Автор: Любитель 29.4.2007, 19:10 |
Официально commctl32.dll версии 6 и больше не поддерживает юникод. В МСДН читаем, что в текущей версии в принципе будет раюотать и Анси, но в принципе сие не гарантируется. ЗЫ Где-то я про это уже говорил. |