Разработка компонента библиотеки карточек

Исходный код компонента библиотеки карточек расположен в подкаталоге CardLib приложенного архива.

Компонент библиотеки карточек является обязательной частью решения, он определяет корректность установки решения в целом, а его отсутствие является сигналом Windows-клиенту о необходимости установки клиентской части.

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

Пример разработки компонента библиотеки карточек на C# приведён в Руководстве разработчика в разделе Разработка компонента библиотеки карточек.

В версии модуля Платформа 5.5.2 требования к компоненту библиотеки карточек были изменены.

Компонент библиотеки карточек (C++) проще всего создать на основе готового шаблона с заменой отдельных частей кода на собственные значения. Например, использовать в основе код компонента данной библиотеки и заменить идентификаторы библиотеки карточек и карточек.

При разработке компонента без использования шаблона, требования к реализации остаются стандартными:

  • Должны быть реализованы интерфейсы ICardLibraryInfo и ICardLibraryInfo2.

  • Должны быть загружены ресурсы: схемы карточек и библиотеки карточек, а также их иконки.

  • Компонент библиотеки должен быть реализован как COM-компонент.

Полный алгоритм создания готового компонента на основе шаблона можно разбить на следующие шаги:
  1. Укажите действительную Версию библиотеки карточек в файле dvver.h, в определении идентификатора сборки VERSION_BUILD. В этом же файле можно заменить авторство сборки.

  2. Добавьте в файл ресурсов (CardLib.rc) следующие ресурсы:

    • В XMLDEF добавляются все схемы карточек, включенных в данную библиотеку, а также схема самой библиотеки карточек.

    • В Icon добавляются иконки карточек и библиотеки карточек.

      При необходимости добавьте в файл с идентификаторами ресурсов (Resource.h) идентификаторы новых ресурсов.

  3. Измените скрипт регистрации CardLib.rgs:

    • В CLSID и ForceRemove нужно указать идентификатор компонента библиотеки карточек, который был указан при разработке схемы библиотеки карточек в параметре Activation string.

    • В TypeLib нужно указать произвольный (сгенерировать самостоятельно) идентификатор библиотеки типов — заменить NetstatSolution на собственное название для регистрации COM-компонента.

  4. В файле CardLib.def укажите название файла сборки.

  5. В файле CardLib.idl необходимо указать идентификатор компонента библиотеки карточек и идентификатор библиотеки типов, которые были использованы на шаге 3.

  6. В файле CardLibInfo.cpp:

    • В массиве GetCardType.Cards перечислите идентификаторы всех карточек библиотеки (соблюдайте формат), их схемы (название ресурса) и иконки.

    • В методе get_Version в sCardLibDef нужно указать собственное название ресурса со схемой библиотеки карточек.

  7. В свойствах проекта укажите необходимое название для сборки.

Если вы работаете с исходными кодами проекта, то компонент библиотеки карточки собирается вторым.