![]() |
|
|
![]()
|
|
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Порыл Google, но не смог найти толковой информации по этому поводу. Как мне к собственной программе создать плагин? Каков вообще принцип построения плагинов? Что для чтения плагина должно быть в моей расширяемой программе? Прошу помочь либо подробными разъяснениями, либо статейками (крайне желательно на русском языке).
|
|||
|
||||
| Klin |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Попробую на русском
mr.Anderson, есть разные подходы, в зависимости от того, какую цель вы преследуете. Плагины - всегда вещь полезная (хотя не рекомендую при создании калькуляторов). Плюсы их использования на лицо. Каждый из них отвечает за определенную часть программы, соответственно при нахождении недочетов, усовершенствовании и т.п. заменяется не сама программа, а только чать ее. Также с оперативка вам только спасибо скажет если, вы будите грузить не 100 метров, а только нужные в данный момент 5. Обычно это DLL файл, в нем может быть че угодно. Будь то коллекция изображений для дизайна, тексты для перевода программы или формы, диалоги, меню и прочее. Способы создания тоже не мало. К примеру можно создать DLL (Файл->Новый->Мастер DLL). Затем создать в этом проекте новую форму (или фрейм). Будет необходимо прописать что-то типа:
Ну то, что форму нужно прописать не напоминаю
Все, дальше можем изменять под себя. Как я и сказал, способов создания и использования достаточно много. Недавно обсуждалась тема, в которой автор хотел запихнуть в ресурсы диалоговую форму - тоже неплохой вариант, поищи на форуме. Что еще можно сказать, я думаю, ты понимаешь, что плагины могут иметь различные расширения. Можно создать и статистический модуль, в этом случае необходимо будет прописать в программе:
Но здесь имхо больше минусов:
Добавлено через 8 минут и 46 секунд так зарисовочка плагинов ![]() Динамика ![]() Статика -------------------- Я человек - попробуйте обвинить меня за это. |
||||||
|
|||||||
| jonie |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
пишешь длл-ку спец вида (спец вид определяешь ТЫ : например условие - наличие функции Init())
а далее грузишь ее динамически через LoadLibrary (поищи по форуму, тут не раз эта тема появлялась).... т.о. имеем: директорию с плагинами, в ней перебираем все длл-ки, и смотрим наличие у них экспортной функции (ну или еще чего что сам опреялешь), а далее остается только передавать данные в\из плагина... Как это реализовать тож было... например передавать указатели, или функторы.... --------- реальный пример (урощенно): есть прога проверяющая балланс счета. Суть плагинов - вызывается спец функция MainPluginFunction() в них (при каждой проверке), которой передаются данные о баллансе (через указатель на структуру). Программа грузит динамически плагины при старте:
а далее в осной программе вызываем MainPluginFunction() для каждого плагина, перебирая наш вектор....
ессно не забываем про ошибки, threads и прочее... но суть везде одна... это простенький и сильно облегченный пример.. но думаю понять хватит.... --- как вариант можно юзать COM.......... но это более сложная песня имхо.... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||
|
|||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Объясните, пожалуйста, сверхподробно вот эти строчки:
Это сообщение отредактировал(а) mr.Anderson - 14.6.2007, 12:30 |
|||
|
||||
| jonie |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
Как она может ее реализовать (функцию такую в ДЛЛ)? ну например
ну и экспорт не забыть. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||
|
|||||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |