Иллюстрированный самоучитель по Visual Studio.Net


Настройка стартового кода - часть 4


Введите в него объявления новых данных и методов так, чтобы файл LeftView.h приобрел вид:

#pragma once

class CTreeDoc; // Упреждающее объявление

class CLeftView : public CTreeView

{

protected:

//====== Ссылка на объект элемета управления деревом

CTreeCtrlS m_Tree;

//====== Список значков узлов дерева

CImageList *m_pImgList;

CLeftView() ;

virtual void OnlnitialUpdate();

DECLARE_DYNCREATE(CLeftView)

public:

virtual ~CLeftView(); CTreeDoc* GetDocument()

{

return dynamic_cast<CTreeDoc*>(m_pDocument);

}

//====== Выбор системных значков

void GetSysImgList ();

//====== Вставка нового узла (ветви)

void AddltemfHTREEITEM h, LPCTSTR s) ;

//====== Поиск своих документов

void SearchForDocs(CString s) ;

//====== Проверка отсутствия файлов

bool NotEmpty(CString s);

//====== Вычисляет полный путь текущего узла дерева

CString GetPath (HTREEITEM hCur);

DECLARE_MESSAGE_MAP()

};

Мы не собираемся поддерживать вывод на принтер, поэтому в файле реализации класса CLef tview (LeftView.cpp) уберите из карты сообщений класса все макросы, связанные с печатью. Удалите также заготовки тех функций, прототипы которых удалили в файле интерфейса класса (LeftView.h). Это функции PreCreateWindow, OnPreparePrinting, OnBeginPrinting, OnEndPrinting. AssertValid, Dump, GetDocument. Кроме директив препроцессора в файле должен остаться такой код:

IMPLEMENT_DYNCREATE(CLeftView, CTreeView) ,

BEGIN_MESSAGE_MAP(CLeftView, CTreeView) END_MESSAGE_MAP()

CLeftView::CLeftView(){} CLeftView::~CLeftView(){}

void CLeftView: : OnlnitialUpdate {}

{

CTreeView::OnInitialUpdate();

}

Аналогичные упрощения рекомендуем проделать и в классе CRightView. Теперь приступим к анализу и развитию кода класса CLeftView. Внутри каждого объекта класса, производного от CTreeView, содержится объект класса CTreeCtrl, ссылку на который мы объявили в классе CLef tview. Как вы знаете (из курса ООП), единственным способом инициализировать ссылку на объект вложенного класса является ее явная инициализация в заголовке конструктора объемлющего класса.


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