iPluginGroupMkr

Интерфейс создания групп загрузок и древовидных списков.

typedef const struct PLUGINGROUPMKR{
    HRESULT(*lpQueryInterface)(REFIID iid, void **ppvObject);
    char (*lpGetTypeLDB)(void *catID);
    LOADDATABLOCK* (*lpGetMasterLDB)(void *catID);
    void* (*lpGetCategoryLDB)(void *catID);
    char (*lpSetCategoryName)(void *catID, wchar_t *sCatName);
    char (*lpGetCategoryName)(void *catID, wchar_t *sBuf, size_t szBuf);
    int (*lpGetCategoryNameLen)(void *catID);
    char (*lpLinkToMasterLDB)(void *catID, LOADDATABLOCK *pLDBchild, const char bScrUbdate);
    void* (*lpMakeCategoryLDB)(void *catPRNT, LOADDATABLOCK *pLDBchild, wchar_t *sCatName, const char bScrUbdate);
} *iPluginGroupMkr;

Методы

lpQueryInterface
Запрос интерфейсов.
lpGetTypeLDB
Возвращает тип catID.
lpGetMasterLDB
Возвращает LDB-мастер указанной категории или загрузки.
lpGetCategoryLDB
Возвращает родительскую категорию. принимает как идентификатор категории так и указатель на LDB.
lpSetCategoryName
Устанавливает имя категории (текст первого столбца).
lpGetCategoryName
Запрашивает строку - имя категории (текст первого столбца).
lpGetCategoryNameLen
Вернёт длину строки - имени категории, байт, без учёта завершающего нуля.
lpLinkToMasterLDB
Связывает pLDBchild(новую дочернюю) загрузку к pLDBmst(родительской) группе.
lpMakeCategoryLDB Создаёт категорию (catID), вложенный уровень визуального списка.

Заметки

Идентификатор этого интерфейса: IID_PluginGroupMkr

Новые понятия:

Мастер-загрузка, группа - фиктивная загрузка объединяющая в себе набор дочерних (настоящих) загрузок. Управление мастер-загрузкой управляет всеми её дочерними (групповой старт, стоп, удаление). Порождается из обычной загрузки, указанием её как pLDBmst аргумент. Визуально пользователю отображается в виде корня раскрывающегося древовидного списка. Также при открытии окна редактирования в структуру POPLDBLST добавляются все её дочерние загрузки.
Дочерняя загрузка - загрузка, помещённая в какую-либо группу, подчинённая мастер-загрузке. Также её локальное управление в некотором роде меняет состояние её мастер-загрузки.
Категория - "пустой" элемент списка - дерева внутри группы, порождающий субгруппу в визуальном интерфейсе пользователя. Сам он ничем не управляет. Можно использовать как способ разгрузки интерфейса с группам, содержащими очень много загрузок. С точки зрения программиста содержимое группы - всё тот-же плоский список без дополнительных ветвлений.
Группы и категории сами удаляются с удалением пользователем всех загрузок внутри этих групп.
catID - Абстрагированный маркер, идентификатор. Он может быть как как реальным указателем на структуру LOADDATABLOCK, так и просто маркером. Какая либо работа с ним за пределами интерфейса iPluginGroupMkr допустима только после однозначного определения чем он является вызовом iPluginGroupMkr:lpGetTypeLDB(). Существует на уровне документации вообще т. к. категория имеет только его (catID) как способ своего обозначения.

Быстрая справка

ОС C поддержкой WinAPI v4
DLL 2fap.exe
Библиотека -
Заголовок plugincom-plugin.h

Смотри также