Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка VC++6укр.doc
Скачиваний:
1
Добавлен:
20.12.2018
Размер:
287.74 Кб
Скачать

Виберіть тип програми mfc AppWizard (exe), у поле назви проекту вводимо oopSample, Натисніть кнопку ок.

Н а першому кроці майстра виберіть тип програми – Single Document (Рис. 7), натисніть кнопку Next>.

Рис. 7

На наступних кроках можна отримати параметри за умовчанням. Тільки на п’ятому кроці можна вибрати використання MFC як статичної бібліотеки (Рис. 8). Цей параметр надає можливість зробити готовий файл програми незалежним від інших модулів.

Р ис. 8

Далі все можна залишити без змін, на останньому кроці натиснути кнопку Finish. Заготовку для програми створено.

Д одамо до проекту файл з вихідним кодом та заголовний файл. Для цього в меню File виберіть пункт New. У діалозі виберіть C++ Source File, в поле назва файлу введіть CCustClass (Рис. 9).

Рис. 9

Аналогічно створюємо заголовний файл відповідно вибравши C/C++ Header File.

Введемо в файли код: в CCustClass.h:

#ifndef __CCustClass_h__

#define __CCustClass_h__

class CCustGraph

{

public:

virtual bool draw(CDC * pDC)=0;

};

class CCustLine : public CCustGraph

{

int x1 ,y1 ,x2, y2;

public:

CCustLine( int _x1 , int _y1 , int _x2 , int _y2);

virtual bool draw(CDC * pDC);

};

class CCustRect : public CCustGraph

{

int x1 ,y1 , w, h ,dx;

public:

CCustRect( int _x1 , int _y1 , int _w , int _h);

virtual bool draw(CDC * pDC);

};

#endif //__CCustClass_h__

В CCustClass.cpp:

#include "stdafx.h"

#include "CCustClass.h"

CCustLine::CCustLine(int _x1 ,int _y1 ,int _x2 ,int _y2):

x1(_x1) , y1(_y1) , x2(_x2) , y2(_y2)

{

};

bool CCustLine::draw( CDC * pDC)

{

pDC->MoveTo( x1 , y1 );

pDC->LineTo( x2 , y2 );

return true;

}

CCustRect::CCustRect( int _x1 , int _y1 , int _w , int _h):

x1(_x1) , y1(_y1) , w(_w) , h(_h) , dx(2)

{

};

bool CCustRect::draw( CDC * pDC)

{

x1+=dx;

if( x1 >300)

dx=-4;

if( x1<10)

dx=4;

pDC->Rectangle( x1 , y1 , x1+w , y1+h);

return true;

}

Розглянемо деякі особливості. Конструктор класу має ім’я самого класу. Ініціалізацію членів класу можна проводити перед кодом конструктора, наприклад:

CCustRect::CCustRect( int _x1 , int _y1 , int _w , int _h):

x1(_x1) , y1(_y1) , w(_w) , h(_h) , dx(2)

{

};

Для наступного перевизначення метод описують так:

virtual bool draw(CDC * pDC);

Розглянемо використання розроблених класів. В файлі OOPSampleView.h додамо перед оголошенням класу COOPSampleView 2 рядки:

#include "CCustClass.h"

#include <vector>

Крім використання наших класів це надасть можливість використовувати шаблон vector зі стандартної бібліотеки С++. В описанні класу COOPSampleView додамо властивість vect:

std::vector<CCustGraph *> vect;

Цей рядок означає, що створено новий клас – динамічний список вказівників на CCustGraph.

Нам також треба створити пункт меню Timer та підпункт Run Timer. Це можна зробити на закладці ResourceView (Рис. 10)

Р ис. 10

Також треба написати код обробника події натиснення на підпункт меню. Для цього необхідно викликати діалог MFC ClassWizard (Меню View, підменю ClassWizard або Ctrl+w).

В діалозі ClassWizard (Рис. 11) виберемо Class name – coopSampleView, Object Ids – id_timer_runtimer, Messages – command.

Рис. 11