Учебник по Visual C++ .Net


Класс окна для отображения графика


CChildView::OnPaint() {

CPaintDC dc(this);

CGraph(m_Points, "Field Distribution", "x[m]","Field").Draw(&dc); }

Класс CGraph разработаем позже. Он будет создавать двухмерный график функции — решения краевой задачи, автоматически масштабируемый и подстраивающийся под текущий размер окна CChildView. Перейдите к файлу с определением оконного класса (ChildFrame.h) и введите следующие коррективы:

# pragma once

#include "Graph.h"

Class CChildView : public CWnd

{

// Вспомогательные классы будут пользоваться данными

friend class CParamDlg;

friend class CGraph;

private:

//===== Контейнер координат точек графика

vector<CDPoint> m_Points;

//===== Вектор источников и свойств среды (см. f и р)

vector<double> m_f, m_r;

//===== Размерность задачи (см. N)

int m_n;

//===== Параметры

double m_k, // Коэффициент k

m_L, // Протяженность расчетной области

m_g0, // Коэффициенты, задающие ГУ слева

m_d0,

m_gn, // Коэффициенты, задающие ГУ справа m_dn ;

CParamDlg *m_pDlg; // Немодальный диалог параметров

public:

CChildView();

virtual -CChildViewO;

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

//===== Изменение размерности задачи

void Resize();

//===== Решение системы методом прогонки

void Solve();

protected:

afx_msg void OnPaintO;

DECLARE_MESSAGE_MAP() };

Точки графика будем хранить в контейнере объектов класса CDPoint, который мы неоднократно использовали, так как исследователи реальных систем работают с вещественными координатами. Переход к экранным координатам будет произведен в классе CGraph. Инициализацию данных проведите в конструкторе оконного класса:

CChildView: :CChildView()

{

m_n = 200;

m_k = -0.0005;

m_L = 200.;

//====== Слева ГУ первого рода Uo=100

m_g0 = 0.;

m_d0 =100.;

m_gn = 0.;

m_dn = 0.;

Resize () ;

m_pDlg = 0;

}

В деструктор вставьте коды освобождения памяти, занимаемой контейнерами:

CChildView::~CChildView()

{

m_Points.clear();




Начало  Назад  Вперед



Книжный магазин