Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.13;
Скачать: CL | DM;

Вниз

Загрузка форм из DLL.   Найти похожие ветки 

 
IgorRu ©   (2004-02-02 10:44) [0]

Создал DLL с формой. Об"явил процедуру:

procedure ShowSettings(MainForm: Pointer); stdcall;

с таким кодом:

with TMainDllForm.Create(MainForm) do begin
ShowModal;
Free;
end;


Если все это запустить и посмотреть в "Диспетчер задач" то там появляется еще одно приложение. Если внутри DLL из TMainDllForm вызвать еще одну форму, то в "Диспетчер задач" появиться еще одно приложение. Такое ощущение, что все они живут отдельно от TApplication. Как создать форму из своей DLL так, что бы не создавалось новое приложение.


 
Ega23 ©   (2004-02-02 10:50) [1]

В DLL у тебя свой экземпляр TApplication.
Я обычно делаю так: передаю в
ShowSettings(MainForm: Pointer); stdcall; не MainForm, a AppHWND.
После чего
Application.Handle:=AppHWND;
Application.CreateForm(TMainDllForm, MainDllForm);


 
IgorRu ©   (2004-02-02 11:15) [2]

Действительно работает. Теперь правда появились побочные эфекты. При выгрузке библиотеки FreeLibrary(HwndLib) MainForm пропадает с экрана но в панели задачь присутствует. Есль свернуть/развернуть приложение то все восстанавливается.


 
Ega23 ©   (2004-02-02 11:17) [3]

Сохраняй значение AppHandle.


 
IgorRu ©   (2004-02-02 11:27) [4]

Как?


 
Юрий Федоров ©   (2004-02-02 11:57) [5]

перед присвоением Application.Handle запомни старое значение
в переменную, перед выходом из procedure ShowSettings восстанови из нее Application.Handle


 
IgorRu ©   (2004-02-02 12:43) [6]

Вы гении.
Теперь еще бы научить извлекаемую форму создаваться с учетом предустановленных свойств. Например совершенно игнорируется свойство Position.
Я устанавливаю его в poOwnerFormCenter
В функцию добавил параметр - ссылку на вызывающую форму ShowSettings: function (Form: Pointer; AppHWND: Integer): Integer; stdcall;
Запускаю. В лучшем случае создается окно по середине Десктопа



Страницы: 1 вся ветка

Текущий архив: 2004.02.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
3-38674
Lucky_elf
2004-01-24 16:45
2004.02.13
Не работает LIKE в IB


3-38667
Kelvin
2004-01-25 10:00
2004.02.13
DBListBox


9-38662
AQUALITY
2003-07-30 06:39
2004.02.13
Слежение за спец ударами


1-38778
MadGhost
2004-02-04 21:58
2004.02.13
можно ли создать свой курсор мыши, и включить его в приложение?


4-39135
GUNski
2003-12-09 20:51
2004.02.13
Как в MDI-форме получить message при создании MDI-Child-окна?