Главная страница
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.019 c
1-44257
pifpaf
2003-04-02 13:59
2003.04.14
Как в WinXP заставить перерисовываться содержимое окна?


14-44377
skiph
2003-03-25 09:12
2003.04.14
Анимация


4-44499
melifaro
2003-02-14 04:09
2003.04.14
Прозрачность окон в XP и 2k


4-44511
{{{KOT}}}
2003-02-15 11:37
2003.04.14
Как мне узнат


3-44073
Sergey_
2003-03-26 09:35
2003.04.14
Как создать запросом таблицу DBF