Deem |
Отправлено: 30.08.2004, 17:09 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Вот, надо сабж. Кто как делает?
Я, понимая толк в извращениях, пишу в DLL: Application = MainApplication. Либу вяжу динамически, будет проект, собирающийся в рантайме: из каждой найденной DLL загружается окно и меню, и выкладывается на главное MDI-окно.
Так вот, когда подсовываю основной Application, создается MDIChild из либы. В конце работы, после удаления окна функцией из либы Аpplication возвращается на место, все корректно завершается.
Как уже сказал, это есть извращение. Тем более что в MDIChild, полученном таким образом, не работает перемещение между контролами по табу! Весь остальной мышачий и клавишный ввод работает! Вот до чего извращения доводят.
Или можно как-нить указать для DLL-ловской Application свое основное окно? Аpplication->MainFrom — read only.
И нагафига при вызове DDL создается еще один (или более) Application?
|
|
AVC |
Отправлено: 30.08.2004, 17:27 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Проверьте перечень Build with runtime packages у головного модуля и dll. У dll должено быть подмножество main и для vcl хотя бы vcl??.bpl. Про дочерние MDI формы в dll'ях нормально написано в ДжародХолинвэрт,... "C++Builder 5. Руководство разработчика" том 2.
Вот когда то писал на похожую тему
Отредактировано AVC — 30/08/2004, 17:37 |
|
Deem |
Отправлено: 31.08.2004, 09:14 |
|
Мастер участка
Группа: Участник
Сообщений: 327
|
Спасибо. Гляжу.........
Да, все класс. Полазил по указанным местам и все заработало.
Могу сказать как: в главной проге и DLL указано использование пакеджей VCL и RTL (таскай их теперь с собой.... ) ;
в экспортируемую функцию создания окна передается Application->Handle, который вставляется в Application->Handle самой DLL;
создается в DLL MDIChild, который ведет себя хорошо как дочернее окно главной формы приложения. Закрывается по своей кнопе, и экспортируемой функцией закрытия из DLL, которую вызывает главное окно перед закрытием приложения.
Отредактировано Deem — 31/08/2004, 11:31
|
|
|