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

Вниз

Объединение меню (не MDI) через DLL   Найти похожие ветки 

 
BPK   (2003-02-09 13:48) [0]

Есть главная программа и несколько подсистем, размещённых в DLL.
У каждой подсистемы есть своё немодальное окно.
Задача - подстыковать (внедрить) главное меню активного окна подсистемы к главному меню управляющей программы, а при деактивизации окна подсистемы - отстыковать его.
Без DLL всё получается замечательно с помощью метода "Merge".
Пробую через DLL. Выяснил, что через Handle это не сделать, поэтому
попробовал передать наружу указатель на объект меню и работать через него. Пока получается установить "Caption" для пунктов меню дочерней формы, но при попытке сделать "Merge" меню управляющей программы исчезает, и выдаются несколько ошибок чтения по недопустимому адресу для DLL.
Всё написано на Delphi, поэтому проблемы с несовместимостью не существует.
Посоветуйте как быть. Очень нехочется ползать по меню вложенными циклами и переносить пункты поодиночке с помощью функций WinAPI. К сожалению функции WinAPI, позволяющей легко подстыковывать и отстыковывать меню не существует.
Как быть?


 
asmith   (2003-02-09 17:41) [1]

Я решал подобную проблему примерно так:
1. В дизайнере головному окну назначено некое меню mmMain со всякими общими задачами типа Exit, Help, About и пр
2. При старте запускающая программа сначала создает динамически еще один объект типа TMainMenu, например, mmNew
3. Далее строится список загружаемых модулей и по очереди из каждого модуля извлекается информация о его названии, количестве методов интерфейса и массив строк-названий методов.
4. Для каждого модуля в mmNew создается TMenuItem с прочитанным названием как Caption и в этот новый TMenuItem в цикле по числу методов добавляются отдельные TAction и TMenuItem, которые вяжутся на обработчики.
5. По завершению всего этого мержим меню mmMain и mmNew.
Схема немного упрощена, ибо в реальности еще читаются из ресурсов модулей растры для использования в качестве изображений на кнопках тулбаров и пунктах меню.


 
BPK   (2003-02-12 23:14) [2]

Короче, если я правильно понял, нужно всё делать вручную?

Смысл в том, что каждая подсистема может работать как автономно (в виде EXE), так и в системе, под управлением главной программы (в виде DLL). Для этого есть разные *.DPR-файлы.

По этой причине у подсистемы уже есть своё меню, и при подстыковке его к главной программе нужно удалить старое меню и создать пункты в меню управляющей программы, причём если в обоих меню есть пункт "Файл", то меню "Файл" основной программы должно дополниться пунктами меню "Файл" окна подсистемы.



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

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

Наверх




Память: 0.47 MB
Время: 0.013 c
9-43985
12345678_
2002-11-15 09:29
2003.04.14
DirectPlay


4-44510
mbIkola
2003-02-12 19:52
2003.04.14
Знатоки в чем ошибка с хуком WH_CBT и TAPISRV ??


6-44315
NikolaB
2003-02-23 01:29
2003.04.14
Web Server and IsapiDLL (izvinite, chto vopros dlinii!)


1-44118
апельсин==
2003-04-03 08:47
2003.04.14
работа с РАР.ЕХЕ


14-44388
hatchy
2003-03-21 14:23
2003.04.14
Создать файл с картинками......