В MFC реализовано несколько классов видов (View) на основе стандартных элементов управления. Пример таких классов CTreeView и CRichEditView. Они сами и работа с ними несколько отличается. Идея здесь в том, что в самом классе вида никаких практически функций не рализовано. То есть класс вида это просто оболочка. Например, в классе CTreeView вообще нет доступных функций. Вот его описание.
CTreeView конструктор GetTreeCtrl указатель на элемент управления, который связан с видом. .............
Вот и всё. Давайте посмотрим как обстоят дела с CRiсhEditView, здесь намного лучше функций больше, но например нет функции Copy, так что примерно тоже самое. Так вот такие классы организованы так.
.......... CWnd |____ CView |___ CCtrlView |__ C.....View
Но при такой иерархии вы не сможете получить доступ к функциям элемента потому, что функций у TreeView просто нет. Так если изучение потомков не дает результата как добраться до специфических функций элемента ? Вот. Для этого в подобных функция придусмотрена возможность доступа к классу элемента CTRL. Вот смотрите.
CRichEditView - CRichEditCtrl& GetRichEditCtrl( ) const; CTreeView - CTreeCtrl& GetTreeCtrl( ) const; .............
Видите в каждом подобном классе вида есть возможность доступа к классу CTRL, который и реализует специфические функции элемента. А у классов CTRL своя иерархия.
.... CWnd |_____ C.....Ctrl
Давайте посмотрим на примере CTreeView как добавить список изображений к данному классу. Вот смотрите код
void CLeftView::OnInitialUpdate() { CTreeView::OnInitialUpdate(); // TODO: You may populate your TreeView with items by directly accessing // its tree control through a call to GetTreeCtrl(). GetTreeCtrl().SetImageList(&cImageList,TVSIL_NORMAL); }
Как видите мне пришлось использовать GetTreeCtrl(), чтобы добраться до функции связывания списка изображений с элементом дерево. Так же если мне захочется добавить элемент в дерево мне придется обратиться к GetTreeCtrl().
Давайте подведем итог. Классы видов на основе стандартных элементов управления реализуют свои возможности на основе двух классов. Все что связано с видом этого элемента находится в классе View, специфические действия над этим элементом нужно проводить получив доступ к классу элемента Ctrl.