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

Вниз

Плагины и менюшки!   Найти похожие ветки 

 
WondeRu ©   (2005-10-31 13:44) [0]

Здравствуйте!

Разрабатываю ПО с поддержкой плагинов, но вот возникла проблема: как создать меню из плагина?
В главной программулине есть спец менюшка, в которую плагины могут пихать все что душе угодно. Только вот как запихать???
Программулина написана на Delphi, плагины - неважно на чем.

Какое более элегантное решение посоветуете?

Заранее спасибо!


 
jack128 ©   (2005-10-31 14:02) [1]

да как угодно. Например, если плагин хочет добавить меню, то он должен экспортировать функцию function CreateMenuItem(hMenu: HMENU): HRESULT;  в которую ты из основного приложения передаешь хендл родительского итема..


 
Opilki_Inside ©   (2005-10-31 14:06) [2]

Да очень просто... каждый плагин должен обладать одним и тем же интерфейсом.. интерфейс - это набор функций для вазимодействия плагина с программой.. одной из подобных функций должна быть функция, которая возвращает имя этого плагина... так вот допустим у тебя плагины лежат в поддиректории \pluigins , тогда ты пробегаешься по всем dll, которые лежат в этой директории и вызываешь эту функцию, и так заполняешь свою "спец. менюшку".. или что они должны пихать? в описанном случае они должны пихать туда свое название... ну а если нужно форму запихнуть, то они должны вернуть тебе какой-нибудь TFrame...


 
GuAV ©   (2005-10-31 14:11) [3]

См. что реализует IContextMenu.


 
WondeRu ©   (2005-10-31 14:15) [4]

Opilki_Inside ©   (31.10.05 14:06) [2]
как бы похожая реализация: все сделано через COM интерфейс... А вот пихать надо меню с вложениями... да притом произвольное...

ну а если нужно форму запихнуть, то они должны вернуть тебе какой-нибудь TFrame...
уже делается, но через Active Form...

jack128 ©   (31.10.05 14:02) [1]
Например, если плагин хочет добавить меню, то он должен экспортировать функцию function CreateMenuItem(hMenu: HMENU): HRESULT;

есть такая приблудина у меня:

procedure TPluginXXX.Set_MenuHandle(Value: Integer);
begin
 FMenuHandle := Value;
 
 AppendMenu(Value,  MF_INSERT, pmCustom.Items[0].Handle,
            PChar(pmCustom.Items[0].Caption));
end;


но она ничерта не добавляет :(


 
WondeRu ©   (2005-10-31 14:19) [5]

GuAV ©   (31.10.05 14:11) [3]
См. что реализует IContextMenu.


можно подробнее? примерчик хотя бы... а то в делфи кроме самого объявления интерфейса ничего нет


 
GuAV ©   (2005-10-31 14:39) [6]


> примерчик хотя бы...

($Delphi)\Demos\ActiveX\ShellExt\contmenu.dpr

Но я не про его использование, а про реализацию чего-то подобного.

Этот интерфейс реализует возможность добавление менюшек к конт. меню проводника. Т.е. похоже на рассматриваемый случай.


 
WondeRu ©   (2005-10-31 18:21) [7]

проблема решилась довольно просто: н стороне плагина формируется XML  с описанием менюшки (название, id-события). В  главной программе по этой XMLине строится меню... и усе)))



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
2-1130428006
Bogdan1024
2005-10-27 19:46
2005.11.20
ООПрограммирование


2-1130502856
Oxid Burn
2005-10-28 16:34
2005.11.20
Timer


14-1130466434
Карелин Артем
2005-10-28 06:27
2005.11.20
Самара. Кто-нибудь идет на конференцию MS сегодня в Ренессанс?


1-1130407173
WondeRu
2005-10-27 13:59
2005.11.20
Как сделать потомка ActiveX формы?


14-1130242397
Opilki_Inside
2005-10-25 16:13
2005.11.20
Some problems using Copy & Paste with different browsers