C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
MDIChild из DLL
Deem
Отправлено: 30.08.2004, 17:09


Мастер участка

Группа: Участник
Сообщений: 327



Вот, надо сабж. Кто как делает?

Я, понимая толк в извращениях, пишу в DLL: Application = MainApplication. Либу вяжу динамически, будет проект, собирающийся в рантайме: из каждой найденной DLL загружается окно и меню, и выкладывается на главное MDI-окно.

Так вот, когда подсовываю основной Application, создается MDIChild из либы. В конце работы, после удаления окна функцией из либы Аpplication возвращается на место, все корректно завершается.
Как уже сказал, это есть извращение. Тем более что в MDIChild, полученном таким образом, не работает перемещение между контролами по табу! Весь остальной мышачий и клавишный ввод работает! Вот до чего извращения доводят. smile.gif

Или можно как-нить указать для 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 (таскай их теперь с собой.... sad.gif) ;
в экспортируемую функцию создания окна передается Application->Handle, который вставляется в Application->Handle самой DLL;
создается в DLL MDIChild, который ведет себя хорошо как дочернее окно главной формы приложения. Закрывается по своей кнопе, и экспортируемой функцией закрытия из DLL, которую вызывает главное окно перед закрытием приложения.





Отредактировано Deem — 31/08/2004, 11:31

Вернуться в Вопросы программирования в C++Builder