Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];

Вниз

Загрузка форм из 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.02 c
1-38889
d_oleg
2004-02-04 10:05
2004.02.13
ACDSee форматы граф. файлов


1-38872
Тимохов
2004-02-05 10:57
2004.02.13
Проблемы с компилятором 2


1-38924
Владимир В.
2004-02-04 12:00
2004.02.13
Эмуляция нажатия клавиши в активное окно


3-38710
Бывающий
2004-01-22 12:39
2004.02.13
Как грамотно представить годовой репорт?


1-38951
ARTSOFT
2004-02-03 00:54
2004.02.13
MediaPlayer проигрывает файлы МР3 прерывисто





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский