Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывести строку, MFC Smart Device Application 
V
    Опции темы
BIV
Дата 20.4.2011, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: 1
Всего: 1



Всем доброе время суток!
Прошу прощения, что нарушаю порядок на форуме, что пишу не в тот раздел, но там ответа можно ждать вечно, хотя и вопрос вроде как не сложный.
Пишу в среде Microsoft Visual Studio 2008 на с++. Проект составляю в MFC Smart Device Application. Возникли сложноси

В окне представления пытаюсь для начала вывести строку:

Код

void CTextView::OnDraw(CDC* pDC)
{
    CTextDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc) return;

    // TODO: add draw code for native data here
    RECT ClientRect;
    GetClientRect (&ClientRect);
    pDC->DrawText
        (pDoc->GetMessage(), // Получение строки
        -1,
        &ClientRect,
        DT_CENTER | DT_VCENTER | DT_SINGLELINE);

}


Компилятор рычит на DT_CENTER | DT_VCENTER | DT_SINGLELINE и выводит 
error  C2664:    'inC  CDC::DrawTextW(LPCTSTR,int,LPRECT,UINT)'    :   cannot  convert parameter  1   from   'char  *'   to   'LPCTSTR'
В обычном мфс все работает
PM MAIL   Вверх
xvr
Дата 20.4.2011, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(BIV @  20.4.2011,  08:58 Найти цитируемый пост)
Компилятор рычит на DT_CENTER | DT_VCENTER | DT_SINGLELINE

Он не на это рычит. Он же вам чистым английским языком сказал -
Цитата(BIV @  20.4.2011,  08:58 Найти цитируемый пост)
cannot  convert parameter  1 
т.е. строку
Цитата(BIV @  20.4.2011,  08:58 Найти цитируемый пост)
from   'char  *'   to   'LPCTSTR'
Unicode видимо?


PM MAIL   Вверх
BIV
Дата 20.4.2011, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: 1
Всего: 1



Цитата(xvr @  20.4.2011,  09:06 Найти цитируемый пост)
Unicode видимо?


Я не знаю, может быть. При сборки с помощью мастера МФС, небыло нигде про юникод. А что делать если это юникод?
PM MAIL   Вверх
xvr
Дата 20.4.2011, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(BIV @  20.4.2011,  19:37 Найти цитируемый пост)
А что делать если это юникод? 

Найти в опциях проекта и отключить (если даст - для Smart Device могут быть свои подводные камни)

PM MAIL   Вверх
BIV
Дата 20.4.2011, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: 1
Всего: 1



Пробовал отключить юникод, но тут уже компилятор находить 200 с чем-то ошибок, и все они ссыламются на стандартные заголовочные файлы. Похоже без юникода никак. Подскажите как вывести строку по другому
PM MAIL   Вверх
bsa
Дата 20.4.2011, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



преобразуй в юникод.
PM   Вверх
BIV
Дата 20.4.2011, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: 1
Всего: 1



Вот пытаюсь преобразовать. Первая компиляция получилась и программа вывела строку, но почему-то в последующих компиляциях все срабатывает, но программа останавливается на mbstowcs(str1, str, 4);

Код

void CText1View::OnDraw(CDC* pDC)
{
    CText1Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);

    RECT ClientRect;
    char str[]={"wert"};
    wchar_t *str1;
    mbstowcs(str1, str, 4);
    GetClientRect (&ClientRect);
    pDC->DrawText
    (str1,
        -1,
        &ClientRect,
        DT_CENTER | DT_VCENTER | DT_SINGLELINE);


    // TODO: add draw code for native data here
}

PM MAIL   Вверх
bsa
Дата 20.4.2011, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



ты память под юникодовую строку не выделил. mbstowcs() это аналог memcpy(), только с преобразованием.
PM   Вверх
BIV
Дата 20.4.2011, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 20.12.2007

Репутация: 1
Всего: 1



Разобрался, спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.