Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.051 c
14-1130139989
ilya39
2005-10-24 11:46
2005.11.20
Фриц Оньон Основы ASP.NET с примерами на C#


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


2-1130426897
Fast2
2005-10-27 19:28
2005.11.20
Как узнать номер текущей записи таблицы?


8-1120231094
psa247
2005-07-01 19:18
2005.11.20
Алгоритм развевающегося флага OPENGL


14-1130804324
Таблоид
2005-11-01 03:18
2005.11.20
Какие есть интересные англоязычные сайты по Delphi ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский