Главная страница
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.044 c
2-1130604971
Alex7
2005-10-29 20:56
2005.11.20
свойство "Parent"


2-1130962408
SpyBoy
2005-11-02 23:13
2005.11.20
Edit->Run


3-1129108339
msguns
2005-10-12 13:12
2005.11.20
ADO+Access. Как в параметре задать NULL


14-1130689087
Kolan
2005-10-30 19:18
2005.11.20
Помогите решить задачу по 1С.


2-1130694384
JBL
2005-10-30 20:46
2005.11.20
dbGrid