![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DLL with MDI... [D6, WinXP]
Ragazor © (2006-09-15 11:16:00)Есть DLL с MDI формой.
Читал что для работы с мди
нужно передавать Апликейшн
этот метод не работает: (1)
type
TdllProc = procedure(ParApplication: TApplication);
var
DLLInstance : THandle;
DLLProcedure : TdllProc;
begin
DLLInstance := LoadLibrary('cmsnote.dll');
if DLLInstance = 0 then begin
MessageDlg('Невозможно загрузить DLL', mtError, [mbOK], 0);
Exit;
end;
@DLLProcedure := GetProcAddress(DLLInstance, 'DicWork');
if @DLLProcedure <> nil then
DLLProcedure(Application)
else
MessageDlg('Не найдена процедура: DicWork', mtError, [mbOK], 0);
а с использованием в библиотеке этого, работает: (2)
procedure DLLUnloadProc(Reason: Integer); register;
begin
if Reason = DLL_PROCESS_DETACH then begin
Application := _DLLApplication;
end;
end;
begin
_DLLApplication := Application;
if @DllProc = nil then DLLProc := @DLLUnloadProc;
end.
В dll проц начинается так
procedure DWork(ParApplication: TApplication); export; stdcall;
begin
CoInitialize(nil);
Application := ParApplication;
_ParentApplication := ParApplication;
dmMain := TdmMain.Create(Application);
WorkForm := TFormDictionaries.Create(Application);
(WorkForm = MDIchildForm)
в 1 случае WorkForm := TFormDictionaries.Create(Application)
вызывает no active MDI child form....
во втором все работает, но там проблемы с выгрузкой DLL.
со статичесткой загрузкой такие же проблемы как и в первом варианте вызова
Подскажите как нужно разрулить эту проблему?
Ragazor (2006-09-15 13:15:00) [21]"procedure DWork(ParApplication: TApplication); export; stdcall;
begin
CoInitialize(nil);
Application := ParApplication;
_ParentApplication := ParApplication;
dmMain := TdmMain.Create(Application);
WorkForm := TFormDictionaries.Create(Application);
(WorkForm = MDIchildForm)
в 1 случае WorkForm := TFormDictionaries.Create(Application)
вызывает no active MDI child form....
"
Сергей М. (2006-09-15 12:54:00) [22]А где и когда у тебя создается MDIParent-форма ?
Ragazor (2006-09-15 12:36:00) [23]это дата модуль
Сергей М. (2006-09-15 12:05:00) [24]
> TdmMain
Это MDIParent-форма ?