Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TextOut - вывод одного символа, TextOut - вывод одного символа 
:(
    Опции темы
dimonser
Дата 16.4.2010, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Необходимо функцией TextOut вывести определенный (единственный) символ из строки. Имеется
Код

        struct Answers{
                char answers[50];
                int metka;//0-не выводить,1 - выводить на экран
        }*pAnswers;

Если выводить в лоб:
Код

TextOut(hdc,x*cx+((cx-tm.tmAveCharWidth*zoom)/2),y*cy+((cy-tm.tmHeight*zoom)/2),pAnswers[i].answers[j],1);

Выдает ошибку: TextOutA: невозможно преобразовать параметр 4 из 'char' в 'LPCSTR'
Попробывал так:
Код

TextOut(hdc,x*cx+((cx-tm.tmAveCharWidth*zoom)/2),y*cy+((cy-tm.tmHeight*zoom)/2),(LPCSTR)pAnswers[i].answers[j],1);

Ошибок не выдает но и ничего не выводит. Потом попробывал использовать wsprintf, но в ответ увидел "смешные" символы . Кодировка стоит многобайтная.
PM MAIL   Вверх
jonie
Дата 16.4.2010, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



dimonser, вам надо делать отдельный буфер из двух байт (для ANSI версии функции), в первый копировать данные, второй заполнять '\0'-ём. И именно этот буфер передавать на вход функции


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
dimonser
Дата 16.4.2010, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Идея понятна, если не трудно киньте примерчик.

Добавлено через 6 минут и 39 секунд
Попробывал вот так
Код

char buffer[2];
buffer[0]=pAnswers[i].answers[j];
buffer[1]='\0';
TextOutA(hdc,x*cx+((cx-tm.tmAveCharWidth*zoom)/2),y*cy+((cy-tm.tmHeight*zoom)/2),buffer,strlen(buffer));

Выводит "динозавриков"
PM MAIL   Вверх
dimonser
Дата 17.4.2010, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вот что отображается
user posted image
PM MAIL   Вверх
586
Дата 17.4.2010, 05:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

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



Буфер из двух символов не нужен.
Цитата(MSDN)
TextOut
...
lpString 
[in] Pointer to the string to be drawn. The string does not need to be zero-terminated, since cbString specifies the length of the string. 

Код
TextOut(hdc,x*cx+((cx-tm.tmAveCharWidth*zoom)/2),y*cy+((cy-tm.tmHeight*zoom)/2),&pAnswers[i].answers[j],1);

Цитата(dimonser @  16.4.2010,  23:50 Найти цитируемый пост)
Выводит "динозавриков"

Что передали в функцию, то и напечаталось...
Цитата(dimonser @  17.4.2010,  02:01 Найти цитируемый пост)
вот что отображается

Видимо, неправильно с pAnswers работаете.
PM   Вверх
dimonser
Дата 17.4.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну вот посмотрите, в функцию передается все правильно, а на экране вижу совсем иное...
user posted image
Так что, непонятно в чем проблема (:

PM MAIL   Вверх
dimonser
Дата 17.4.2010, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Забыл добавить что это выводится в дочернем окне, и я думаю, что это окно не расспознает русские символы
PM MAIL   Вверх
586
Дата 17.4.2010, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

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



Какой шрифт используете? Он русский язык поддерживает?
MessageBox нормально строку печатает?
Как будет работать TextOut, если написать:
Код
TextOutA(hdc,x*cx+((cx-tm.tmAveCharWidth*zoom)/2),y*cy+((cy-tm.tmHeight*zoom)/2),"привет",6);
или
TextOutW(hdc,x*cx+((cx-tm.tmAveCharWidth*zoom)/2),y*cy+((cy-tm.tmHeight*zoom)/2),L"привет",6);

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


Новичок



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

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



1)MessageBox - все корректно
2)"привет" - выводит "стремные" символы
3)L"привет" - ошибка
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

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


 




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


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

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