Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > SetConsoleTitle в Visual Studio 2008 |
Автор: Politexnik 30.7.2008, 00:31 | ||
Здрасьте! Перешел с Visual C++ 6.0 на Visual Studio 2008. В 6.0 WinAPI функция SetConsoleTitle из windows.h работала ПРЕВОСХОДНО. Так что такой код как
работал без ошибок. Но в Visual Studio 2008 это все не работает. Выдает ошибку, ругаеется нецензурными словами, типа error C2664: 'SetConsoleTitleW' : cannot convert parameter 1 from 'const char [28]' to 'LPCWSTR' Но штука в том, что если отконвертировать старый проект в новый, то эта функция работает. Помогите пожалуйста разобраться. Заранее спасибо. |
Автор: mrbrooks 30.7.2008, 07:33 | ||
Здается мне что вся соль в юникоде ![]() Добавлено через 4 минуты и 19 секунд
|
Автор: Andrey44 30.7.2008, 07:48 | ||||
Все проекты в 2008 студии идут в юникоде(в смысле по-умолчанию, но можно снять птичку ![]()
или так:
|
Автор: Politexnik 30.7.2008, 08:25 |
Большое спасибо!!! Все ОК!!! Но что меняет буква L или _T спереди. Кодировку??? И еще один маленький вопросик. Что такое LPCWSTR и чем отличается от const char??? |
Автор: mrbrooks 30.7.2008, 08:30 | ||
юникод строка и анси строка.
Добавлено через 3 минуты и 35 секунд Обрати внимание на мой пример - функции можно использовать также в зависимости от вида строки - если в анси то функция заканчивается на A, если в юникоде то на W. В общем виде без окончания - будет использоваться то какая кодировка по умолчанию. |
Автор: Andrey44 30.7.2008, 09:01 |
LPCWSTR - это указатель на константную юникодную строку, вот и все отличия от LPCSTR тое-же const char[] |
Автор: Igoreck 29.11.2010, 16:23 | ||
а можно написать
??? у меня так то же работает хотя есть интересный момент - когда вводишь название функции, то предлагается только вариант SetConsoleTitle а когда смотришь ее варианты перегрузки то предлагается или SetConsoleTitleA или SetConsoleTitleW |
Автор: WhKitten 29.11.2010, 16:54 |
В свойствах проекта Configuration Properties / General / Character set установить "Use Multi-Byte character set". Вообще SetConsoleTitle это макрос, который вызывает SetConsoleTitleA или SetConsoleTitleW. При этом функции для Unicode работают по времени также, как ANSI или даже быстрее - так что вызывать SetConsoleTitleA не имеет смысла. Чтобы в независимости от настроек проекта код компилировался при передаче макросу строки должны быть преобразованы к типу _TCHAR*. Это делает макрос _T или _TEXT. В зависимости от настроек проекта _TCHAR интерпретируется как char или wchar_t. Поэтому любой код, который вызывает макросы, а не функции (который имеют A или W на конце) без использования макросов _T или _TEXT можно считать неверным. О чём и говорит ошибка. http://msdn.microsoft.com/ru-ru/library/c426s321.aspx |