

Программирование на языке MFC
Мой второй блог в серии программирования
Отображение без проблем
Я начал писать программу и остановился, словно услышал вопрос, задаваемый читателем: «Как же так, если, к примеру, мне хочется отображать данные в виде дерева или, скажем, в виде текста, мне так и придется прорисовывать дерево или использовать TextOut()?» Что ж, вопрос вполне закономерный. Мне тоже очень не хотелось думать, что разработчики MFC остановились на полпути и не довели дело до конца. Помните, читатель, мое федположение о том, что класс CView является абстрактным и предоставляет только базовые возможности для объектов класса окна представления? Отправной точкой дальнейших изысканий послужило предположение, что более специализированные классы окон представлений наследуются от CView. Заглянув в исходные коды MFC, я слегка обомлел. Оказывается, от CView наследуются классы CCtrlView, CScrollView. В свою очередь от CCtrlView унаследованы классы CListView, CTreeView, CEditView, CRichEditView. От CScrollView унаследованы CFormView, CPreviewView. От CFormView унаследованы классы CDaoRecordView, CRecordView, CHtmlView, COIeDBRecord-View. Графически это можно представить так:

(CVievT)
-[CCtrlView ]
—( CListView ]
—[CTreeView]
-(CEditVievT)
CRichEditView]
-(CScrollView ~)
—[CFormView ]
-(CDAORecordView)
—(CRecordView ]
-(CHtmlView ]
—[CQIeDBRecordView ]
—[ CPreviewView]
Даже судя по названиям, уже можно сделать выводы о предназначении этих классов. Наверное, класс окна отображения в моей программе мне нужно было наследовать не от CView, а от более специализированного класса, скажем, CEditView. Что ж, попробуем так и сделать. Но теперь нам нужно отследить,каким образом работают объекты этого класса. Давайте, читатель, подумаем вместе вами. На каком этапе начинает работать объект класса, унаследованного от CView? Наверное, при создание объекта окна представления. Давайте попробуем проследить, что произойдет в момент создания окна представления.
