Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2015, 18:11   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Посимвольный вывод через TextOutA

Добрый день. Вопрос следующий:есть символьный массив, мне нужно циклично через функцию TextOutA посимвольно выводить каждую букву массива.
Например
Код:
char arr[19]="HELLO WORLD";
for(i=0; i<18 ;i++)
TextOutA(hdc, 210,50, arr[i],17);
Компилятор ругается на arr[i]- невозможно преобразовать параметр 4 из "char" в "LPCSTR"
Вероника99 вне форума Ответить с цитированием
Старый 23.10.2015, 18:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
TextOutA(hdc, 210,50, &arr,17);
Не?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2015, 20:43   #3
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Мне нужно, чтобы вдоль точек каждого графика было слово, получилось не совсем то что я хотела. Думала посимвольно выводить каждую букву, но он все превращается в кашу, получилось только вывести целое слово
Код:
#include<windows.h>
#include<math.h>
 
#define pi 3.14
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//Процедура рисования линии
BOOL Line(HDC hdc, int x1, int y1, int x2, int y2);
 
wchar_t  szProgName[]=L"Имя программы";
 
int i, xView, yView;
double y;
char Buf[2];
  char Buf2[21]="Слово";
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
HWND hWnd;
MSG lpMsg;
WNDCLASS w;
 
w.lpszClassName=szProgName; 
w.hInstance=hInstance; 
w.lpfnWndProc=WndProc; 
w.hCursor=LoadCursor(NULL, IDC_ARROW); 
w.hIcon=0; 
w.lpszMenuName=0; 
w.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); 
w.style=CS_HREDRAW|CS_VREDRAW; 
w.cbClsExtra=0;
w.cbWndExtra=0;
 
//Если не удалось зарегистрировать класс окна - выходим
if(!RegisterClass(&w))
return 0;
 
//Создадим окно в памяти, заполнив аргументы CreateWindow
hWnd=CreateWindow(szProgName, 
(LPCWSTR)NULL, 
WS_OVERLAPPEDWINDOW, 
100, 
100, 
500, 
400, 
(HWND)NULL,
(HMENU)NULL, 
(HINSTANCE)hInstance,
(HINSTANCE)NULL);
 
//Выводим окно из памяти на экран
ShowWindow(hWnd, nCmdShow);
//Обновим содержимое окна
UpdateWindow(hWnd);
 
//Цикл обработки сообщений
 
while(GetMessage(&lpMsg, NULL, 0, 0)) { //Получаем сообщение из очереди
TranslateMessage(&lpMsg); //Преобразует сообщения клавиш в символы
DispatchMessage(&lpMsg); //Передаёт сообщение соответствующей функции окна
}
return(lpMsg.wParam); 
}
 
//Функция окна
LRESULT CALLBACK WndProc(HWND hWnd, UINT messg, 
WPARAM wParam, LPARAM lParam)
{
HDC hdc; //создаём контекст устройства
PAINTSTRUCT ps; //создаём экземпляр структуры графического вывода
HPEN hPen = NULL; //создаём перо
//Цикл обработки сообщений
switch(messg)
{
 
case WM_SIZE:
xView=LOWORD(lParam);
yView=HIWORD(lParam);
 
break;
 
 
//сообщение рисования
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
SetMapMode(hdc, MM_ISOTROPIC); //логические единицы отображаем, как физические
SetWindowExtEx(hdc, xView*2,yView*2, NULL); //Длина осей
SetViewportExtEx(hdc, xView, -yView, NULL); //Определяем облась вывода
SetViewportOrgEx(hdc, xView/2, yView/2, NULL); //Начало координат
 
//Рисуем оси координат
Line(hdc,0, 5000,0,-5000);//ось У
Line(hdc, -5000,0,5000,0);//ось Х
MoveToEx(hdc, 0,0,NULL); //перемещаемся в начало координат
 
//Создание красного пера
hPen=CreatePen(1,4,RGB(255,25,0));
SelectObject(hdc, hPen);
 
#define ystep 10
#define xstep 0.02
 
 
//синусоида
y = 0;
for(i=-5000; i<5000; i=i++)
{   
 
     double x = (double)i * xstep;
    double sinx = sin((double)x);
     if (sinx > 0)
     {
        MoveToEx(hdc, i, (int)y, NULL);
        y = x*log(sinx);
        y *= ystep;
        LineTo(hdc, i, y);
if(y>400||y<-400)
            TextOutA(hdc, i,y, Buf2,5); //Вывод ЗДЕСЬ
     }
 
//y=180.0*(exp(-i*0.01))*sin(pi*i*(200.0/400.0)/180.0);
}
 
//Делаем перо снова чёрным
hPen=CreatePen(1,1,RGB(0,0,0));
SelectObject(hdc, hPen);
 
//Наносим деления
for(i=-5000; i<5000; i+=100)
{
Line(hdc, i, 3,i,-3);
Line(hdc, -3, i,3,i);
itoa(i*xstep, Buf, 10);
TextOutA(hdc, i-5, -5, Buf , strlen(Buf));
itoa(i/ystep, Buf, 10);
TextOutA(hdc, -5, i, Buf , strlen(Buf)); 
}
 
ValidateRect(hWnd, NULL); //Обновляем экран
EndPaint(hWnd, &ps);
break;
 
//сообщение выхода - разрушение окна
case WM_DESTROY:
DeleteObject(hPen); //не забываем уничтожать перья
PostQuitMessage(0); //Посылаем сообщение выхода с кодом 0 - нормальное завершение
break;
 
default:
return(DefWindowProc(hWnd, messg, wParam, lParam)); //освобождаем очередь приложения от нераспознаных
}
return 0;
}
 
//Функция рисования линии
BOOL Line(HDC hdc, int x1, int y1, int x2, int y2)
{
MoveToEx(hdc, x1, y1, NULL); //сделать текущими координаты x1, y1
return LineTo(hdc, x2, y2); //нарисовать линию
}
Вероника99 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посимвольный ввод. Confused Паскаль, Turbo Pascal, PascalABC.NET 16 28.11.2013 22:46
Посимвольный вывод в txt Павел_95 Общие вопросы C/C++ 4 11.11.2012 14:19
Посимвольный ввод Nataly026 Паскаль, Turbo Pascal, PascalABC.NET 4 18.03.2012 19:54
C++ Win32 | Посимвольный ввод вывод с декодированием Sh4dd0w Visual C++ 3 07.11.2011 22:22
C# - Посимвольный вывод слова в случайном порядке Lastsummer Помощь студентам 4 02.02.2011 12:40