12.12.2017, 20:45 [+3 UTC]
в нашей команде: 2 373 чел. | участники онлайн: 13 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
12.12.2017, 19:02

Последний вопрос:
12.12.2017, 17:45

Последний ответ:
12.12.2017, 16:34

Последняя рассылка:
12.12.2017, 18:15

Писем в очереди:
1

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

РАЗДЕЛ [неизвестная рассылка]

[администратор рассылки: [неизвестный]]

Лучшие эксперты в этом разделе


Перейти к консультации №:
 

Консультация онлайн # 138607
Раздел: [неизвестная рассылка]
Автор вопроса: Бородин Всеволод Олегович
Отправлена: 30.05.2008, 01:13
Поступило ответов: 1

Я вывел на экран окно с двумя маховичками для изменения параметров моей задачи и два поля для ввода двух других параметров. Как взять положение маховичка и передать его в качестве переменной в функцию,которая у меня считает точки графика? Аналогично, как взять то значение, которое я ввожу в поле и передать его в функцию?
На всякий случай приведу текст программы:
#include "TGraphPanel.h"
#include "fltkopt.h"
#include <FL/Fl.H>
#include <math.h>
#include <Fl/Fl_Box.h>
#include <Fl/Fl_Button.h>
#include <FL/Fl_Roller.H>
#include <FL/gl.h>
#include <FL/Fl_Slider.H>
#include <GL/gl.h>
#include <stdlib.h>
#include "MainWindow.h"
#include <FL/Fl_Input.H>

void Exit_Callback(Fl_Widget*, void*)
{
exit(0);
}
double Sinc (double x, double d, int L)
{
double E = 1;
double X[1000];
double Y[1000];
double xmax;
double xmin;

int i;
double* pX;
double* pY;

for (i=0; i<1000; i++)
{
X[i] = xmin+i*(xmax-xmin)/1000;

x = X[i];

if (x != 0)
{
Y[i] = Sinc(x, d, L);
}
else
{
Y[i] = E*E*d*d;
}
}
return Y[i];
pX = &X[i];
pY = &Y[i];
}
void TGraphPanel::draw()
{
static bool bIsFirstTime = true;
if(bIsFirstTime)
{
InitialiseGL();
bIsFirstTime = false;
}

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();

for(i=0; i<1000; i++)
{
glBegin(GL_LINES);

glColor3d(0.00f, 0.00f, 1.00f);

glVertex2d(-1.0, -1.0);
glVertex2d(1.0, 1.0);
}
glEnd();
}
int main(int argc, char * argv[])
{
{
MainWindow MyMai

MainWindow MyMainWindow;

Fl_Window *window = MyMainWindow.make_window();

Fl::background(100, 100, 100);

window->begin();

TGraphPanel* pPanel = new TGraphPanel(10, 65, window->w() - 20, window->h() - 140);
Fl_Button* pExitButton = new Fl_Button(370, 570, 60, 30, "OK");
Fl_Roller* pRoller1 = new Fl_Roller(630, 525, 30, 60, "lambda");
Fl_Roller* pRoller2 = new Fl_Roller(170, 525, 30, 60, "L");
Fl_Input* pInput1 = new Fl_Input(170, 20, 60, 30, "Vvod Minimum x");
Fl_Input* pInput2 = new Fl_Input(630, 20, 60, 30, "Vvod Maksimum x");
pExitButton->callback(Exit_Callback);
window->end();
window->resizable(pPanel);
window->show(argc, argv);

return Fl::run();

}
}
Как видите, у меня есть два маховичка, задающиеся классом Fl_Roller. Нужно брать положение каждого из них и передавать в функцию Sinc в качестве параметров d и L, а потом вычисленные ею значения передать в функцию draw(). То же самое нужно сделать с двумя полями xmax и xmin.

Состояние: Консультация закрыта

Здравствуйте, Бородин Всеволод Олегович!

Чтобы получить значение маховичка, надо вызвать его метод value().
Например:

pRoller1->value()

Тип возвращаемого значения будет double.
Для полей ввода это будет так:

pInput1->value(char* str)

в str - указатель на текущее значение элемента


Консультировал: XeS
Дата отправки: 30.05.2008, 16:30

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

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

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 1.37495 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.41 от 25.02.2017
Бесплатные консультации онлайн