Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ и WinAPI
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
V.I.P
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 22
#1

Линейная диаграмма (Прошу Помощи) - C++ WinAPI

17.05.2012, 15:45. Просмотров 2103. Ответов 24
Метки нет (Все метки)

Уважаемые, товарищи! Здраствуйте! Прошу помощи у Вас. Требуется создать линейную диаграмму, у меня возникли трудности, никак не получается ее нарисовать в системе координат, а так же сделать подписи. Требуется самая простая диаграмма, но с подписями. Мои наработки ниже. Прошу откликнуться на мою просьбу. Заранее Спасибо!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
    
#include <windows.h>
#include <string.h>
#include <fstream>
#include <stdio.h>
#include <iostream>
 
int numData;
int res;
FILE* pFile;
int str[1];
float * buffer;
float * buffer2;
int i[10]={365, 430, 495, 560, 625, 690,755, 820, 885, 950};
int j;
 
 
 
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
TCHAR szProgName[] = TEXT("LineDiag");
 
int WINAPI WinMain(HINSTANCE hCurrentInst, HINSTANCE hPreviousInst, LPSTR lpszCmdLine, int nCmdShow)
{
WNDCLASS wndClass;
HWND hWnd;
MSG message;
 
wndClass.lpszClassName = szProgName;
wndClass.hInstance = hCurrentInst;
wndClass.lpfnWndProc = WndProc;
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndClass.lpszMenuName = 0;
wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
 
if (!RegisterClass(&wndClass))
return 0;
 
hWnd = CreateWindow(
szProgName,
TEXT("LineDiag"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hCurrentInst,
NULL
);
 
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
 
while (GetMessage(&message, NULL, 0, 0))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
 
return message.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
RECT rc;
 
switch (nMessage)
{
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
MoveToEx (hDC, 300, 650, NULL);
LineTo (hDC, 300, 100);
LineTo (hDC, 295, 115);
MoveToEx (hDC,300, 100, NULL);
LineTo (hDC,305, 115);
MoveToEx (hDC, 300, 650, NULL);
LineTo (hDC, 950, 650);
LineTo (hDC, 935, 645);
MoveToEx (hDC, 950, 650, NULL);
LineTo (hDC, 935, 655);
MoveToEx (hDC, 300, 650, NULL);
pFile = fopen ("input.txt","r");
for (int i=0; i<1000; i++)
{
res=fscanf(pFile,"%f %f",&str[10]);
if (res>0) numData++;
}
rewind (pFile);
buffer = (float*) malloc (sizeof(float)*numData);
buffer2 = (float*) malloc (sizeof(float)*numData);
for (int i=0; i<numData; i++)
{
fscanf(pFile,"%f %f", &buffer[i], &buffer2[i]);
}
for (int j=0; j<numData; j++)
{
    fscanf(pFile, "%f %f", &buffer[j], &buffer2[j]);
}
fclose (pFile);
//HPEN NewPen=CreatePen (PS_SOLID, 2, RGB(255,0,0)); 
//SelectObject
 
for (int j=0; j<numData; j++)
LineTo(hDC,   i[j], buffer[j]);
 
EndPaint(hWnd, &ps);
 
break;
 
case WM_DESTROY:
PostQuitMessage(0);
break;
 
default:
return DefWindowProc(hWnd, nMessage, wParam, lParam);
}
 
return 0;
}

http://www.cyberforum.ru/cpp/thread1075726.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2012, 15:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Линейная диаграмма (Прошу Помощи) (C++ WinAPI):

Линейная программа
Всем привет! прошу помощи: Целой переменной S присвоить сумму цифр...

Линейная диаграмма
Ребят, возникли трудности с созданием линейной горизонтальной диаграммы в...

Абрамов № 61, 85, 334(а), 374, 67(б,а). Прошу помочь, мне нужны эти задания для зачета прошу помощи.
Прошу помощи, скачайте файл Абрамов (пожалуйста), номер 61, 85, 334(а), 374,...

Линейная диаграмма жизни животных
Добрый вечер форумчане, сестра учится в школе и надо сделать задачу, сам не...

прошу помощи
Помогите получить зачетку. Надо написать токую програму на С : User вводит...

24
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25613 / 17166 / 6826
Регистрация: 22.10.2011
Сообщений: 30,362
Записей в блоге: 6
31.05.2012, 21:42 #21
V.I.P, у тебя неправильная последовательность обработчиков события. Я ж написал в IDM_EXIT, что "проваливаемся на WM_DESTROY", то есть, как минимум WM_DESTROY надо поставить сразу после WM_COMMAND, так, как это было у меня в коде из 15-го поста.
Цитата Сообщение от Digit@ll Посмотреть сообщение
SetMenu (hWnd, hMenu);
Не надо тут SetMenu, если бы надо было - я б написал. Если я выдрал кусок кода из работающего проекта, с отображаемой менюшкой, и в нем не было SetMenu - это значит что? Либо компилятор умеет предсказывать, куда надо подставить вызов этой функции, либо (что более вероятно) указания хендла созданного меню 9-м параметром CreateWindow достаточно. Конечно, этот момент ТС опять не заметил.

Добавлено через 1 минуту
Цитата Сообщение от V.I.P Посмотреть сообщение
Где должна располагаться функция DestroyMenu (hWnd); ?
если создавалось меню до создания окна - то удалять его надо как можно позже - т.е., в обработчике WM_DESTROY. Логично?
1
V.I.P
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 22
31.05.2012, 21:53  [ТС] #22
UI, окей, поставил как Вы сказали: WM_COMMAND сразу перед WM_DESTROY.
Меню так и не появилось, что я не доделал?
Однако какой должны быть функции открытия любого файла и чтения из него? Как она выглядит? Каков ее синтаксис?
Предыдущая, связанная с input.txt в корне проекта явно не подходит.
0
Digit@ll
Brainsbreaker
888 / 366 / 51
Регистрация: 01.02.2011
Сообщений: 1,586
31.05.2012, 22:03 #23

Не по теме:

Цитата Сообщение от UI Посмотреть сообщение
Не надо тут SetMenu
Ну да, 9 параметр всё решает. OK


GetOpenFileName - диалог открытия файлов, примеры найдешь.
0
V.I.P
0 / 0 / 0
Регистрация: 17.05.2012
Сообщений: 22
31.05.2012, 22:22  [ТС] #24
Это уже вопрос рабочего меню, у меня еще нет даже нерабочего. Его просто нет.
0
Digit@ll
Brainsbreaker
888 / 366 / 51
Регистрация: 01.02.2011
Сообщений: 1,586
31.05.2012, 22:34 #25
Цитата Сообщение от UI Посмотреть сообщение
указания хендла созданного меню 9-м параметром CreateWindow достаточно
V.I.P, ну? К #18 посту.
0
31.05.2012, 22:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2012, 22:34
Привет! Вот еще темы с решениями:

Прошу помощи
Есть у меня отладочная плата на которой я экспериментирую. И вот возникла идея,...

Прошу помощи
Помогите пожалуйста... необходимо написать прогу, не понимаю как Создайте 2...

Прошу помощи!
Здравствуйте!Помогите если можете с задачами,знаю что задачи для человека...

Прошу помощи.
Доброго времени суток!! Помогите, если есть время, разобраться с проблемой -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru