Поделиться через


Альтернативы для архитектуры "документ-представление"

Приложения MFC обычно используют архитектуру " документ-представление " для управления сведения, формат файла и визуальное представление данных пользователям. Для большинства приложений классических документ/представление архитектура соответствующую и эффективная архитектура приложения. Эта архитектура отделяет данные от просмотра и, в большинстве случаев упрощает приложение и уменьшает избыточный код.

Однако документ/архитектура представления не подходят для некоторых ситуациях. Рассмотрим следующие примеры:

  • При миграции приложения, написанного в C для Windows, возможно, потребуется выполнить этот порт перед добавлением поддержка документ/представление в приложение.

  • При создании упрощенной служебной программы, можно обнаружить, выполняемых без архитектуры документов и представлений.

  • Если исходный код уже сочетает управление данными с помощью средства просмотра данных, переместить код в документ/модели представлений не по стоимости, поскольку необходимо отделить 2. Может потребоваться использование оставить код как.

Чтобы создать приложение, в котором не используется архитектура документов и представлений, снимите флажок Поддержка архитектуры документов и представлений в шаге 1 мастера приложений MFC. Дополнительные сведения см. в разделе Мастер приложений MFC.

Примечание

Приложения на основе диалоговых окон, созданные с помощью мастера приложений MFC не используют архитектуру " документ-представление ", поэтому флажок Поддержка архитектуры документов и представлений запрещен при размещении приложения тип диалогового окна.

C мастеров Visual C++, а также источник и редакторы диалоговых окон, работа с созданным применением так же, как и с любым другим мастером создания применением. Приложение может поддерживать появляются, панели инструментов и строки состояния и имеется окно О. Приложение не регистрирует отсутствуют шаблоны документов, и не будет содержать класс документа.

Обратите внимание, что в создаваемое приложение имеет класс представления CChildView, производное от CWnd. MFC создает и позиции один экземпляр класса представления в фреймовые окна, созданные приложением. MFC по-прежнему принудительно с помощью окна представления, так как он упрощает размещение и управлять содержимое приложения. Можно добавить код рисования к члену OnPaint этого класса. Код должен добавить появляются в представление, а не для кадра.

Поскольку документ/представление архитектура, предоставленные MFC за реализации многие из основных черт приложения, его нет в проекте означают, что ответственность за реализации несколько важных функций приложения:

  • Как это предусмотрено с помощью мастера приложений MFC, меню для приложения содержит только New и команды Exit в меню Файл. (Команда New поддерживается только в приложениях MDI, не приложений SDI без поддержки документов и представлений). Созданный ресурс меню не поддерживает список последних выбиравшихся (последний использовавшийся ся).

  • Необходимо добавить функции и реализации для всех команд, которые приложение будет поддерживать, включая Открыть и Сохранить обработчика в меню Файл. MFC обычно приводится код для поддержки этих функций, но эта поддержка тесно привязана к архитектуры " документ-представление ".

  • Панель инструментов для приложения, если вашему запросу одно, будет незначителен.

Настоятельно рекомендуется использовать мастер приложений MFC для создания приложения без архитектуры документов и представлений, поскольку мастер гарантирует правильную архитектуры MFC. Однако если необходимо избегать использования мастера, здесь несколько подходов для обхода архитектуры документов и представлений в коде:

  • Отображение документа как неиспользуемый придаток и реализовать пользовательский код управления данными в классе представления, как предложено выше. Нагрузка на документа относительно небольшой. Один объект CDocument создает небольшой объем нагрузки сама по себе, а также небольшую нагрузку базовых классов CDocument, CCmdTarget и CObject. Оба новых классов мал.

    Объявленный в CDocument:

    • 2 Объекта CString.

    • bool3 S.

    • Один указатель CDocTemplate.

    • Один объект CPtrList, который содержит список представлений документа.

    Кроме того, документ требует промежуток времени создает объект документа, его объекты представления фреймовое окно, и объект шаблона документа.

  • Визуализация и документ и представление в качестве неиспользуемые придатки. Поместите код управления данными и рисования в фреймовое окно, а не представление. Этот подход ближе к модели программирования C# языка.

  • Переопределите части платформы MFC, которые создают документ и представление, чтобы исключить их создания вообще. Процесс создания документа начинается с вызова CWinApp::AddDocTemplate. Удалите этот вызов функции-члена из InitInstance класса и приложения, вместо этого следует создать фреймовое окно самостоятельно в InitInstance. Поместите код управления данными в класс фреймового окна. Процесс создания документов и представлений проиллюстрирован в Создание документов и представлений. Это больше работы и требует более глубокого понимания платформы, но освобождает разработчика полностью нагрузки документов и представлений.

Статьи MFC. Использование классов базы данных без документов и представлений предоставляет несколько конкретных примеров альтернативных документов и представлений в контексте приложений баз данных.

См. также

Основные понятия

Архитектура "документ-представление"