Microsoft Visual C++ и MFC. Программирование для Win95 и WinNT


Создание нового класса - часть 2


Так, например, вы можете создать новый класс CNewClass, наследованный от базового класса окна просмотра CEditView. Определение класса помещается во включаемый файл NewClass.h (листинг 4.7).

Листинг 4.7. Файл NewClass.h

// Класс окна просмотра CNewClass

class CNewClass : public CEditView

{

protected:

      CNewClass();      

      DECLARE_DYNCREATE(CNewClass)

 

// Attributes

public:

 

// Operations

public:

 

// Overrides

      //{{AFX_VIRTUAL(CNewClass)

protected:

      virtual void OnDraw(CDC* pDC);

      //}}AFX_VIRTUAL

 

// Implementation

protected:

      virtual ~CNewClass();

#ifdef _DEBUG

      virtual void AssertValid() const;

      virtual void Dump(CDumpContext& dc) const;

#endif

 

// Методы, предназначенные для обработки сообщений

protected:

      //{{AFX_MSG(CNewClass)

      //}}AFX_MSG

      DECLARE_MESSAGE_MAP()

};

Определение методов класса размещается в другом файле, имеющем расширение CPP (листинг 4.8).

Листинг 4.8. Файл NewClass.cpp

#include "stdafx.h"

#include "Single.h"

#include "NewClass.h"

 

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

 

//////////////////////////////////////////////////////////////

// Реализация класса CNewClass

 

IMPLEMENT_DYNCREATE(CNewClass, CEditView)

 

CNewClass::CNewClass()

{

}

 

CNewClass::~CNewClass()

{

}

 

BEGIN_MESSAGE_MAP(CNewClass, CEditView)

      //{{AFX_MSG_MAP(CNewClass)

            

      //}}AFX_MSG_MAP

END_MESSAGE_MAP()

 

//////////////////////////////////////////////////////////////

// Метод OnDraw класса CNewClass

void CNewClass::OnDraw(CDC* pDC)

{

      CDocument* pDoc = GetDocument();

      // TODO: здесь можно расположить код, выполняющий вывод в

      // окно

}

 

//////////////////////////////////////////////////////////////

// Диагностические методы класса CNewClass

#ifdef _DEBUG

void CNewClass::AssertValid() const

{

      CEditView::AssertValid();

}

 

void CNewClass::Dump(CDumpContext& dc) const

{

      CEditView::Dump(dc);

}

#endif //_DEBUG

Полученная заготовка класса полностью работоспособна. Ее можно дополнить по своему усмотрению новыми методами и данными. Эту работу можно выполнить вручную, но гораздо лучше и проще воспользоваться услугами предоставляемыми ClassWizard. За счет использования ClassWizard процедура создания собственного класса значительно ускоряется и уменьшается вероятность совершить ошибку во время объявления методов.




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



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