GetProcAndIddForUrl

Данная процедура вызывается в случае если пользователь начинает новую загрузку с URL, подходящим под шаблон обрабатываемых твоим плагином сайтов. Или если пользователь открывает свойства связанной с твоим плагином загрузки. Данная процедура предназначена для получения идентификатора ресурса шаблона диалога, отображаемого как специальный диалог настройки загрузки (нижняя часть окна добавления новой или свойств загрузки) и точи входа в диалоговую процедуру для обеспечения работы элементов указанного шаблона диалога.

DLGPROC GetProcAndIddForUrl(
    const char *url,
    const char **Idd
);

Параметры

url
[вх]
URL адрес для которого создаётся загрузка.
Idd
[вых]
Принимает указатель на строку-идентификатор ресурса диалога, для CreateDialog().
Стоит отметить что префиксы "jFap" и "2Fap" запрещены для идентификаторов в плагинах т. к. являются зарезервированными отличительными особенностями идентификаторов ресурсов для внутренних нужд программы и универсальных шаблонов диалогов, которые возможно будут реализованы в будущем.

Возвращаемые значения

Точка входа в соответствующую указанному шаблону диалоговую процедуру, для CreateDialog()
0, как указание на ошибку и отказ от работы.

Заметки

Отказ от обработки (возврат нуля) просто провоцирует систему начать обычную загрузку файла (или выбрать другой плагин, поддерживающий работу с данным сайтом).

Стоит заметить что в параметр url передаётся содержимое поля url структуры LOADDATABLOCK создаваемой загрузки.
Особенность момента заключается в том, что система, как после работы этой функции так и в процессе работы с диалоговым окном плагина сама не принимает никаких действий к отображению пользователю внесённых в URL модификаций, что следует учитывать в процессе построения логики работы плагина и по надобности вручную обновлять содержимое поля URL диалога добавления загрузки (установкой контрола IDE_URL родительского окна своего диалога)
Также отмечу что система в процессе выполнения загрузки может самостоятельно менять значение поля url в ответ на сообщения сервера (например следование перенаправлению).

Т. к. создаваемый диалог является элементом управления окна загрузки у него, помимо стандартных сообщений, есть ещё свои собственные, отправляемые ему родительским окном, а также он может отправлять родительскому окну набор управляющих сообщений, описания которых приведены на других страницах этого раздела данного руководства...

Пример:

DLGPROC GetProcAndIddForUrl(const char *url, const char **Idd)
{   //запрос к плагину на выдачу диалоговой процедуры и идентификатора ресурса диалога для настройки загрузки конкретного URL.
    *Idd = MAKEINTRESOURCEA(IDD_MYDLG);

    return DialogProc;
}

IDD_MYDLG - это типичный числовой идентификатор ресурса из заголовочного файла ресурсов. MAKEINTRESOURCE - это макрос, так что проблем с недоступностью результатов его "работы" не возникнет.
DialogProc - это диалоговая процедура для указанного шаблона.
И первое и второе внутри основного модуля передаются как соответствующие аргументы WinAPI функции CreateDialogParam() для создания окна твоего диалога.

К вопросу настройки шаблона:

Для своего правильного отображения и работы шаблон обязательно должен иметь стили DS_CONTROL и WS_CHILD.
На примере некоторой "пустышки":
DD_TESTADVLOAD DIALOG DISCARDABLE  0, 0, 232, 78
STYLE DS_CONTROL | WS_CHILD
FONT 8, "MS Sans Serif"
BEGIN
    PUSHBUTTON      "ОК",IDOK,0,64,50,14
END

Разобраться в устройстве подробней можно изучив приведённые исходные тексты некоторых плагинов.

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

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

Смотри также