Главная страница
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.056 c
14-1130596651
raiks
2005-10-29 18:37
2005.11.20
Статическое связывание *.exe, написанного на С++, и DLL, написанн


8-1119852046
Chaser
2005-06-27 10:00
2005.11.20
Подскажите как качественно уменьшить размер картинки


14-1129462973
Anton_K
2005-10-16 15:42
2005.11.20
Раздаю 99 приглашений в Google Mail


1-1130343525
Боян Георгиев
2005-10-26 20:18
2005.11.20
Can only modify an image if it contains a bitmap.


4-1126889831
ArtemESC
2005-09-16 20:57
2005.11.20
свойства другого окна