Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Тупой вопрос по LPCTSTR

304
27 июля 2006 года
Fenyx
707 / / 26.01.2005
Решил поучить С++ ... :( как правильный юзверь почитал прилепленую тему.... смотрю урок http://firststeps.ru/mfc/steps/r.php?2 выполняю его на VS 2005 а компилятор ругаеться 'CStatic::Create' : cannot convert parameter 1 from 'char [12]' to 'LPCTSTR'.... :( просьба обьяснить в чем дело и не тыкать в мануалы :) хотя полезные линки всегда пригодяться :)
ЗЫ Заренее благодарен.
354
27 июля 2006 года
ШпиЁн
468 / / 19.02.2006
А я загрузил на Visual C++ 7.0 (у меня старенький пакет Visual Studio 2002) и ВСЁ работает! а вообще-то есть банальные способы, рпеобразования типов...
 
Код:
char s[12]="abcdefgh";
MyStatic->Create((LPCTSTR)s,WS_CHILD|WS_VISIBLE|SS_CENTER,
     CRect(10,10,100,50),this);

или я неправ? ;-)))
3
27 июля 2006 года
Green
4.8K / / 20.01.2000
Или ты не прав!
LPCTSTR - макрос, который в зависимости от установленого чарсета раскрывается либо в const wchar_t*, либо в const char*.
Поэтому надо лишь иначе опеределить строку:
TCHAR s[12] = TEXT("abcdefgh");
354
27 июля 2006 года
ШпиЁн
468 / / 19.02.2006
Green, каюсь, сразу не посмотрел, а надо было! :-)))
398
28 июля 2006 года
Alexandoros
630 / / 21.10.2005
Ну да, в 2к5 по умолчанию юникод стоит, а в 2к3 мультибайт.
Project->properties->character set - поменять с юникода на мультибайт и все заработает.
(ПС это в 2к3 чарактер сет находится в пропертисах, а в 2к5 - хз :))
304
29 июля 2006 года
Fenyx
707 / / 26.01.2005
[QUOTE=Alexandoros]Ну да, в 2к5 по умолчанию юникод стоит, а в 2к3 мультибайт.
Project->properties->character set - поменять с юникода на мультибайт и все заработает.
(ПС это в 2к3 чарактер сет находится в пропертисах, а в 2к5 - хз :))[/QUOTE]
Спасибо помогло... а в кратце какая разница между двумя параметрами?
304
29 июля 2006 года
Fenyx
707 / / 26.01.2005
[QUOTE=Green]Или ты не прав!
LPCTSTR - макрос, который в зависимости от установленого чарсета раскрывается либо в const wchar_t*, либо в const char*.
Поэтому надо лишь иначе опеределить строку:
TCHAR s[12] = TEXT("abcdefgh");[/QUOTE]

А по подробней для тупых в С++? :)
398
29 июля 2006 года
Alexandoros
630 / / 21.10.2005
Мультибайт - строка так и представлена в памяти строкой символов по 1му байту
Юникод - строка в памяти представлена в кодировке юникод, который на один символ выделяет 2 байта.

wchar_t* - указатель на юникод
wchar_t x[] = "0123456789" - даная строка займет 22 байта (10 символов + 0)

char* - указатель на строку байтов
сhar x[] = "0123456789" - даная строка займет 11 байтов (10 символов + 0)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог