Создание нового класса
Создание нового класса
Из любой страницы ClassWizard можно добавить в приложение новый класс, созданный на основе базовых классов. В качестве базового класса можно использовать классы, наследованные от класса CCmdTarget или класса CRecordset . Если требуется создать класс, не наследуемый от базовых классов CCmdTarget или CRecordset, использовать средства ClassWizard нельзя. Такие классы надо создавать вручную, непосредственно в текстовом редакторе.
Объекты порожденные от класса CCmdTarget могут обрабатывать сообщения Windows и команды, поступающие от меню, кнопок, акселераторов. Класс CCmdTarget и другие наследованные от него классы имеют таблицу сообщений (Message map) – набор макрокоманд, позволяющий сопоставить сообщениям Windows и командам методы класса.
Чтобы создать класс, нажмите кнопку Add Class из любой страницы главной диалоговой панели ClassWizard. Откроется временное меню, содержащее три строки: New, From a file, From an OLE TypeLib. Для создания нового класса выберите из этого меню строку New. Если вы уже имеете исходные тексты класса и их просто требуется подключить к проекту, выберите из меню строку From a file. Последняя строка меню From an OLE TypeLib используется для подключения классов из библиотеки OLE.
Когда вы создаете новый класс, на экране появляется диалоговая панель Create New Class. В поле Name введите имя создаваемого класса. Рекомендуется начинать названия классов с символа “C”. Для создаваемого класса организуются два файла реализации класса, имеющие расширения CPP и H. В них будут помещаться объявления класса, а также определения его методов и данных. Имя файлов реализации отображается в левой части группы File. По умолчанию файлы реализации имеют имена, соответствующие имени класса. Однако их можно изменить, воспользовавшись кнопкой Change из группы File.
Теперь выберите из списка Base Class имя базового класса. Список Base Class достаточно велик. В нем содержатся не только основополагающие классы типа CCmdTarget, CDialog, CDocument, CFrameWnd, CView, CWinThread, CWnd. Список базовых классов включает классы большинства органов управления, например CAnimateCtrl, CButton, CColorDialog, CComboBox, CDragListBox, CEdit, CEditView, CFileDialog, CFontDialog, CHeaderCtrl, CHotKeyCtrl, CListBox, CListCtrl, CListView, CProgressCtrl, CStatic и многие многие другие. Доступны также базовые классы, предназначенные для работы с базами данных: CDaoRecordSet, CDaoRecordView, CRecordset, CRecordView, классы обеспечивающие технологию OLE: COleDocument, COleLinkingDoc, COleServerDoc.
Так, например, вы можете создать новый класс 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 процедура создания собственного класса значительно ускоряется и уменьшается вероятность совершить ошибку во время объявления методов.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Создание нового процесса
Создание нового процесса В операционной системе Unix создание процессов происходит уникальным образом. В большинстве операционных систем для создания процессов используется метод порождения процессов (spawn). При этом создается новый процесс в новом адресном пространстве,
Создание нового процесса
Создание нового процесса Созданию процессов (имеется в виду создание процесса из программного кода) посвящено столько описаний [1-9], что детальное рассмотрение этого вопроса было бы лишь пересказом. Поэтому мы ограничимся только беглым перечислением этих возможностей,
Создание нового потока
Создание нового потока Создание нового потока в программном коде осуществляет вызов:int pthread_create(pthread_t* thread, const pthread_attr_t* attr, void*(*start_routine)(void*), void* arg);где thread — NULL или указатель переменной типа pthread_t, значение которой будет загружено идентификатором созданного потока после
Создание нового WS-файла
Создание нового WS-файла Как и в случае обычного одиночного сценария, новый WS-файл создается с помощью пункта меню File|New, однако в диалоговом окне New нужно выбрать вкладку Workspaces, где представлены несколько мастеров для создания файлов различных типов (рис. П3.5). Рис. П3.5.
Создание нового документа
Создание нового документа Для создания нового документа нужно открыть подменю File ? New (Файл ? Новый) и выбрать пункт Document (Документ); два других пункта будут рассмотрены позже, так как они касаются более сложных тем.Получив команду о создании нового документа, Adobe InDesign
Создание нового документа
Создание нового документа Размеры создаваемого документа могут быть совершенно разными в зависимости от нашей цели. Газеты бывают как формата А3, так и формата А4, а размеры некоторых из них не соответствуют стандартным. Точно так же в зависимости от конкретного издания
8.2.1. Создание нового хэша
8.2.1. Создание нового хэша Как и в случае с классом Array, для создания хэша служит специальный метод класса []. Данные, перечисленные в квадратных скобках, образуют ассоциированные пары. Ниже показаны шесть способов вызвать этот метод (все хэши с a1 до c2 содержат одни и те же
Создание нового документа
Создание нового документа Создать новый документ в программе Adobe Photoshop можно, выполнив команду File ? New (Файл ? Новый). При этом в специальном окне (рис. 7.1) необходимо указать основные настройки будущего документа: размеры, разрешение, цветовой режим, заполнение документа
Создание нового документа
Создание нового документа Чтобы создать новый файл Word, нажмите Кнопку «Office» и в появившемся меню выполните команду Создать. В результате откроется окно (рис. 2.11), в котором нужно указать режим создания нового документа. Вы можете создать документ либо на основе шаблона,
2.2.1. Создание нового отчета
2.2.1. Создание нового отчета RPTwin является специализированным генераторам отчетов, который позволяет создавать качественные отчеты по моделям процессов и данных. К сожалению, в RPTwin не входит в поставку BPwin 4.0, однако создавать отчеты с его помощью можно предварительно
2.5.2 Создание нового отчета
2.5.2 Создание нового отчета Для создания нового отчета следует выбрать пункт меню File/NewERwin Report или щелкнуть по кнопке на панели инструментов. Появляется диалог ERwin Report Editor (рис. 2.121).В поле Name следует внести имя отчета. Категория отчета (Category) указывает на тип объектов
5.1.1. Создание нового отчета
5.1.1. Создание нового отчета RPTwin является специализированным генераторам отчетов, который позволяет создавать качественные отчеты по моделям процессов и данных. RPTwin входит в поставку как BPwin, так и ERwin. Функциональность RPTwin позволяет создавать не просто отчеты
Создание нового проекта
Создание нового проекта Приступить к процессу создания нового проекта можно тремя разными способами.• Начать построение здания с использованием мастера проектов – самый быстрый, но наименее гибкий способ построения чертежа здания.• Создать проект «с нуля» с
Создание нового документа
Создание нового документа Документ, который вы можете создать в приложении Single, можно убрать, только полностью закрыв приложение. Функция создания нового документа не работает. Когда вы выбираете из меню File строку New или нажимаете кнопку , расположенную в панели
5.1. Создание нового раздела
5.1. Создание нового раздела Как уже было сказано, в реестре имеется пять корневых разделов. Вы не можете создать еще один корневой раздел, однако можете создать раздел в любом из имеющихся корневых разделов (он будет представлять собой раздел первого уровня по отношению к
5.3. Создание нового параметра
5.3. Создание нового параметра Редактор реестра позволяет создавать параметры следующих типов (см. рис. П4.4):? REG_SZ — строковый параметр;? REG_BINARY — двоичный параметр;? REG_DWORD — параметр DWORD;? REG_MULTI_SZ — мультистроковый параметр;? REG_EXPAND_SZ — расширяемый строковый параметр.Параметры