на начало
На главную страницу
Форум   

Статья :: Реакция на выбор узла дерева

 

Реакция на выбор узла дерева

Поиск «своих» файлов, то есть файлов с расширением mgn, и демонстрацию их содержимого в виде окон с рисунками следует производить в ответ на выбор (selection) пользователем одного из объектов файлового дерева. Это действие отличается от раскрытия узла дерева, когда пользователь однократно нажимает на маркер (+) раскрытия или делает двойной щелчок на самом узле. Для того чтобы выбрать тот или иной узел, пользователь либо щелкает мышью изображение, либо текстовую строку, соответствующую данному узлу. Реакцию на уведомление об этом событии (OnSelchanged) мы уже ввели в.состав класса CLeftview. Теперь введите внутрь этой функции следующие коды:

void CLeftView::OnSelchanged (NMHDR *pNMHDR, LRESULT *pResult)

{

NM_TREEVIEW* p = (NM_TREEVIEW*)pNMHDR;

//====== Освобождение контейнера текущих файлов

GetDocument()->FreeDocs();

//====== Поиск нужных файлов

SearchForDocs (GetPath(p->itemNew.hItem));

//====== Генерация картинок и демонстрация их в окне

//====== правого представления

GetDocument()->ProcessDocs();

*pResult = 0;

}

Схема обработки сообщения =TVN_SELCHANGED такая же — WM_NOTIFY, но алгоритм отличается. Акцент в обработке переносится в класс документа. Там следует хранить данные о файлах документов, обнаруженных в выбранной папке или на логическом диске, туда же следует ввести новые методы: FreeDocs и ProcessDocs. При изменении выбора пользователя мы:

  • уничтожаем предыдущие данные с помощью метода FreeDocs;
  • ищем и запоминаем свои файлы в выбранном объекте файловой системы (метод SearchForDocs);
  • создаем новые объекты вспомогательного класса CPolygon;
  • просим их прочесть свои данные в обнаруженных файлах;
  • отображаем их в виде картинок в окне правого представления с помощью метода ProcessDocs.

Поиск документов своего типа (mgn-файлов) производится по той же схеме с использованием класса CFindFile и его методов поиска объектов файловой системы. Но если ранее мы просматривали все объекты, задав маску поиска "*.*", то теперь мы можем сузить поиск, задав маску "* .mgn". Полные пути найденных файлов будем хранить в контейнере m_sFiles типа vector<cstring>, который чуть позже мы вставим в число членов класса документа. А сейчас дополните класс CLef tview методом:

void CLeftView::SearchForDocs (CString s) {

//====== Дополняем файловый путь маской поиска

s += "*.mgn";

CFileFind cff;

BOOL bFound = cff.FindFile(s);

while (bFound)

{

bFound = cff .FindNextFile() ;

//==== Запоминаем файловые пути в контейнере строк

GetDocument()->m sFiles.push back(cff.GetFilePath());

}

}

 

Реакция на выбор узла дерева

страницы в данном разделе 
Урок 5. Управление файловым деревом Управление файловым деревом
Настройка стартового кода Список изображений, ассоциируемый с деревом
Обращаемся к операционной системе Реакция на уведомляющие сообщения CTreeCtrl
Реакция на выбор узла дерева Класс CPolygon
Конструкторы и операции Вспомогательные функции
Развитие класса документа Документ и его представления
Обзор функции Initlnstance Ресурсы шаблона документов
Класс для нового представления документа Класс для просмотра изображений
Окна с геометрией данных Взаимодействие представлений документа
Визуальное редактирование данных Отслеживание состояния команд
Тестирование Немодальный диалог
Создание и связывание переменных с полями диалога Обработка сообщений от элементов управления
Нестандартные кнопки Немодальный режим работы


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста