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


Пошаговое руководство. Предоставление модели подключаемого модуля .NET

В этом пошаговом руководстве показано расширение классического примера MFC Scribble для поддержки модели подключаемых модулей с использованием технологий .NET.

Решение Scribble для MFC дополняется поддержкой объектной модели .NET. Кроме того, образец предоставляет архитектуру подключаемых модулей, обеспечивающую прямое взаимодействие подключаемых модулей .NET с решением MFC Scribble.

Обязательные компоненты

Образец ScribbleDotNET: расширение образца Scribble функциями CLR

Построение и запуск этого образца

  1. Откройте файл решения Scribble.sln в среде разработки Visual Studio.

  2. Постройте решение, используя конфигурацию Debug или Release.

  3. В обозревателе решений откройте файл plugins.xml для элементов решения.

  4. В фале plugins.xml измените первую часть пути в элементах Assembly, чтобы она соответствовала ранее построенной конфигурации, например замените "VBShapes.dll" на "Debug\VBShapes.dll" и замените "CSPenColor.dll" на "Debug\CSPenColor.dll", если при построении использовалась конфигурация Отладка.

  5. Запустите построенный исполняемый файл.

  6. Выберите меню Подключаемые модули.

    1. Выберите пункт меню Рисование фигур. Будет запущен подключаемый модуль VBShapes, рисующий три контура квадратов разных цветов.
  7. Выберите меню Подключаемые модули.

    1. Выберите пункт меню Изменить цвет пера. Будет запущен подключаемый модуль CSPenColor, позволяющий выбрать цвет пера в диалоговом окне цветов .NET.

Принцип работы

Реализация образца состоит из двух основных частей.

  1. Предоставление объектной модели для разработчиков подключаемых модулей

    Предоставляется доступ к двум основным интерфейсам, предназначенным для реализации модели подключаемых модулей (определение этих интерфейсов см. в проекте ScribbleApp):

    • IScribbleApp — интерфейс для доступа к набору функций, позволяющих разработчику подключаемых модулей взаимодействовать с запущенным приложением Scribble. Этот интерфейс реализован на базе образца Scribble (см. ScribbleApp.cpp в проекте Scribble) и экземпляра реализованного интерфейса, переданного в функцию-член Run() интерфейса IScribblePlugin (описывается ниже)

    • IScribblePlugin — интерфейс, реализуемый разработчиком подключаемых модулей. Разработчик использует функции, предоставляемые интерфейсом IScribbleApp, для реализации своего подключаемого модуля.

  2. Расширение базового приложения Scribble для поиска, загрузки и выполнения подключаемых модулей

    • Вначале выполняется синтаксический разбор XML-файла, содержащего список загружаемых подключаемых модулей. Каждый обнаруженный модуль загружается, и с помощью System.Reflection проверяется допустимость его типа. Точнее говоря, отражение используется для того, чтобы просмотреть список типов и убедиться, что один из них реализует предоставленный интерфейс IPlugin. Реализацию этого механизма см. в файле PluginBld.cpp проекта Scribble.

    • Затем CScribbleApp использует программы, реализованные в PluginBld.cpp, для получения списка всех обнаруженных подключаемых модулей. Для каждого модуля из этого списка динамически создается пункт в меню Подключаемые модули. Когда пользователь выберет один из пунктов меню Подключаемые модули, будет запущен соответствующий модуль.

Использованные технологии

  • Использование XML для задания расположения подключаемых модулей

  • Использование отражения для проверки типа подключаемого модуля, указанного в XML-файле

  • Определение объектной модели для создания подключаемых модулей

  • Загрузка и запуск подключаемого модуля в приложении C++

См. также

Задачи

SCRIBBLE Sample: MFC MDI Drawing Application