DLLEntryPoint(DLL_PROCESS_ATTACH); end.

В разделе usesпоявилось объявление двух новых модулей windows и dialogs, без них наш код не скомпилируется. Чуть дальше появилась процедура DLLEntryPoint с одним параметром, в котором будет передаваться событие, которое произошло. Внутри процедуры я проверяю оператором caseтип пришедшего сообщения и в зависимости от этого вывожу сообщение.

Между beginи endбиблиотеки я назначаю переменной DLLProc нашу процедуру. После этого я вызываю её и в качестве параметра указываю событие DLL_PROCESS_ATTACH.

На компакт диске, в директорииПримерыГлава 18Entryты можешь увидеть пример этой программы.

 

18.8. Вызов из библиотек процедур основной программы.

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

Создай новый проект динамической библиотеки. В основном модуле напишем следующий код:

library FuncProject;

uses SysUtils, Classes;

type TCompProc= procedure(Str:PChar);StdCall;

procedure CompS(Str:PChar; Proc:TCompProc);StdCall; begin if @Proc<>nil then TCompProc(Proc)(Str); end;

exports CompS index 10;

{$R *.res}