| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Своя программа и плагин к ней |
| Автор: mr.Anderson 13.6.2007, 20:22 |
| Порыл Google, но не смог найти толковой информации по этому поводу. Как мне к собственной программе создать плагин? Каков вообще принцип построения плагинов? Что для чтения плагина должно быть в моей расширяемой программе? Прошу помочь либо подробными разъяснениями, либо статейками (крайне желательно на русском языке). |
| Автор: Klin 13.6.2007, 23:46 | ||||||
| Попробую на русском mr.Anderson, есть разные подходы, в зависимости от того, какую цель вы преследуете. Плагины - всегда вещь полезная (хотя не рекомендую при создании калькуляторов). Плюсы их использования на лицо. Каждый из них отвечает за определенную часть программы, соответственно при нахождении недочетов, усовершенствовании и т.п. заменяется не сама программа, а только чать ее. Также с оперативка вам только спасибо скажет если, вы будите грузить не 100 метров, а только нужные в данный момент 5. Обычно это DLL файл, в нем может быть че угодно. Будь то коллекция изображений для дизайна, тексты для перевода программы или формы, диалоги, меню и прочее. Способы создания тоже не мало. К примеру можно создать DLL (Файл->Новый->Мастер DLL). Затем создать в этом проекте новую форму (или фрейм). Будет необходимо прописать что-то типа:
Ну то, что форму нужно прописать не напоминаю
Все, дальше можем изменять под себя. Как я и сказал, способов создания и использования достаточно много. Недавно обсуждалась тема, в которой автор хотел запихнуть в ресурсы диалоговую форму - тоже неплохой вариант, поищи на форуме. Что еще можно сказать, я думаю, ты понимаешь, что плагины могут иметь различные расширения. Можно создать и статистический модуль, в этом случае необходимо будет прописать в программе:
Но здесь имхо больше минусов:
Добавлено через 8 минут и 46 секунд так зарисовочка плагинов ![]() Динамика ![]() Статика |
| Автор: jonie 14.6.2007, 00:00 | ||||
| пишешь длл-ку спец вида (спец вид определяешь ТЫ : например условие - наличие функции Init()) а далее грузишь ее динамически через LoadLibrary (поищи по форуму, тут не раз эта тема появлялась).... т.о. имеем: директорию с плагинами, в ней перебираем все длл-ки, и смотрим наличие у них экспортной функции (ну или еще чего что сам опреялешь), а далее остается только передавать данные в\из плагина... Как это реализовать тож было... например передавать указатели, или функторы.... --------- реальный пример (урощенно): есть прога проверяющая балланс счета. Суть плагинов - вызывается спец функция MainPluginFunction() в них (при каждой проверке), которой передаются данные о баллансе (через указатель на структуру). Программа грузит динамически плагины при старте:
а далее в осной программе вызываем MainPluginFunction() для каждого плагина, перебирая наш вектор....
ессно не забываем про ошибки, threads и прочее... но суть везде одна... это простенький и сильно облегченный пример.. но думаю понять хватит.... --- как вариант можно юзать COM.......... но это более сложная песня имхо.... |
| Автор: mr.Anderson 14.6.2007, 12:29 | ||
Объясните, пожалуйста, сверхподробно вот эти строчки:
|
| Автор: jonie 14.6.2007, 17:18 | ||||||
Как она может ее реализовать (функцию такую в ДЛЛ)? ну например
ну и экспорт не забыть. |