Главная страница
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.033 c
2-1130834044
Got
2005-11-01 11:34
2005.11.20
Как передать в функцию перечесляемый тип?


14-1130310641
Petrovski
2005-10-26 11:10
2005.11.20
Оценка динамики процесса


9-1120637163
Зм1й
2005-07-06 12:06
2005.11.20
OpenAL


6-1122277100
AbrosimovA
2005-07-25 11:38
2005.11.20
Закрыть открытый порт


5-1109970079
BRom
2005-03-05 00:01
2005.11.20
Видимость внутреннего компоненте другими