Форум программистов, компьютерный форум CyberForum.ru

win32api странности при выводе на экран - C++

Восстановить пароль Регистрация
 
Toson
0 / 0 / 0
Регистрация: 28.06.2012
Сообщений: 20
03.07.2012, 14:42     win32api странности при выводе на экран #1
Доброго времени суток. Возникла проблема: при использовании в цикле TextOut на экран выводится только одна первая цифра, считанная из массива matr и переведенная в символ, хотя их должно быть как минимум 49 Собственно вопрос - почему?) И еще вопрос: почему если выводить один символ (например букву "Z"), то он выводится корректно, а если попытаться вывести несколько, то получаются какие-то "квадратики"?
Заранее спасибо!

Код для первого вопроса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int end=7;
    int endcycle=7;
    char buffer[2];
    int x=100;
    int y=100;
    int i=0;
while(end!=0)
{
    while(endcycle!=0)
        {
            hdc=BeginPaint(hDlg,&ps);
            itoa(matr[i], buffer, 10);
            TextOut(hdc, x, y, (LPCWSTR)buffer, strlen(buffer));
            EndPaint(hDlg,&ps);
                x=x+20;
            i++;
            endcycle--;
        }
        end--;
        x=0;
        y=y+20;
}
Код для второго вопроса:
C++
1
2
3
4
5
6
7
8
 
char buffer[5];
 
sprintf(buffer, "ZERO");
hdc=BeginPaint(hDlg,&ps);
TextOut(hdc, 240, 150, (LPCWSTR)buffer, strlen(buffer));
EndPaint(hDlg,&ps);
Sleep(666);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2012, 14:42     win32api странности при выводе на экран
Посмотрите здесь:

Теряються поля при выводе на экран C++
Странности при вводе из файла C++
Как сделать, чтобы при выводе на экран были пробелы C++
Ошибка при выводе на экран C++
C++ Мусор при выводе
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
03.07.2012, 15:35     win32api странности при выводе на экран #2
Цитата Сообщение от Toson Посмотреть сообщение
strlen(buffer)
попробуйте добавить -1
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
03.07.2012, 15:43     win32api странности при выводе на экран #3
тут могут быть проблемы из-за путаницы с типами.
буфер чаров. а функция рисования текста - юникодная, т.е. расчитана на работу с широкими символвами.
TextOut(hdc, 240, 150, (LPCWSTR)buffer, strlen(buffer));
то, что жирное - это некорректно. либо буфер должен быть из WCHAR символов,
либо нужно явно задавать правильную функцию
TextOutA - ASCII версия
TextOutW - Unicode вервия
TextOut - это макрос, который в зависимости от настройки проекта разворачивается либо в аськи либо в юникод версию.

без указания всего этого нужно использовать специальные типы и макросы и функции:
TCHAR buffer[32];
TextOut(hdc, 240, 150, buffer, strlen(buffer)); - strlen должно быть тоже макросом, который выглядит как strlen с какими-то префиксами или суфиксами. я не помню как именно она выглядит
Toson
0 / 0 / 0
Регистрация: 28.06.2012
Сообщений: 20
03.07.2012, 18:51  [ТС]     win32api странности при выводе на экран #4
Цитата Сообщение от DU Посмотреть сообщение
тут могут быть проблемы из-за путаницы с типами.
буфер чаров. а функция рисования текста - юникодная, т.е. расчитана на работу с широкими символвами.
TextOut(hdc, 240, 150, (LPCWSTR)buffer, strlen(buffer));
то, что жирное - это некорректно. либо буфер должен быть из WCHAR символов,
либо нужно явно задавать правильную функцию
TextOutA - ASCII версия
TextOutW - Unicode вервия
TextOut - это макрос, который в зависимости от настройки проекта разворачивается либо в аськи либо в юникод версию.

без указания всего этого нужно использовать специальные типы и макросы и функции:
TCHAR buffer[32];
TextOut(hdc, 240, 150, buffer, strlen(buffer)); - strlen должно быть тоже макросом, который выглядит как strlen с какими-то префиксами или суфиксами. я не помню как именно она выглядит
Со вторым вопросом помогло на TextOutA поменять, спасибо)

Добавлено через 1 час 22 минуты
Хотя и с первой проблемой тоже разобрался, в общем спасибо Огромнейшее)
Yandex
Объявления
03.07.2012, 18:51     win32api странности при выводе на экран
Ответ Создать тему
Опции темы

Текущее время: 07:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru