Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/48: Рейтинг темы: голосов - 48, средняя оценка - 4.52
 Аватар для aryabush
7 / 7 / 0
Регистрация: 13.02.2013
Сообщений: 22

CallBack функции. Один из способов реализации

21.04.2013, 23:07. Показов 9937. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Call back functions

Определение:
Callback(англ. call — вызов, англ. back — обратный) или фу́нкция обра́тного вы́зова в программировании — передача исполняемого кода в качестве одного из параметров другого кода.

Суть:
Пусть у вас есть программа, в которой используется Dll. Call back функция – это функция реализованная в основной программе, но вызываемая в одной или нескольких функциях из dll.

Зачем:
Пусть у вас одна из функций dll должна обновлять какие-либо элементы главной формы, доступ к этим элементам осуществляется как раз через callback функции.

Один из способов реализации callback для c++ builder:
1) В dll объявим функцию :

C++
1
void (*MyCallback)(int,int,int);  //функция с 3-мя входными параметрами
2) Реализуем функцию вспомогательную функцию в dll
C++
1
2
3
LoadFunc(void *func){
MyCallback =(void (*)(int,int,int))func;
                       }
3) В главной программе после загрузки dll выполняем:
C++
1
2
3
4
5
6
Main_Prog_Func_Load_To_dll(void){
typedef void (*function_address)(int,int,int);    
function_address var_function;
var_function= main_programm_function; 
LoadFunc(var_function);
}
main_programm_function(int a, int b, int c) – это функция главной программы, которую вы хотите вызвать в dll, только для dll ее именем будет MyCallback.
После выполнения в главной программе функции Main_Prog_Func_Load_To_dll(void) в dll можно использовать вызов call back функции:
C++
1
(*MyCallback)(1,2,3);
4
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2013, 23:07
Ответы с готовыми решениями:

For_each и аргументы callback-функции; Как передать callback'у больше одного аргумента
Изучаю контейнеры и алгоритмы stl по Майерсу . С непривычки слегка охренел и запутался в них . В общем есть у меня простой вызов...

Один из способов вызвать segfault.
Вот код: #include <stdio.h> int main(){ char b = 1; register int c=0; register char *a = &b; ...

Один из простейших способов шифровки
Один из простейших способов шифровки состоит в табличной замене одного символа на другой. Выбрать некоторую таблицу, разработать способ ее...

3
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
22.04.2013, 00:31
Это к чему это ты ?

Если делишься инфой, то почему не в Блоге или в виде FAQ.

Цитата Сообщение от aryabush Посмотреть сообщение
Один из способов реализации callback для c++ builder:
В Builder логичнее использовать события ...

Добавлено через 5 минут
Что касается в общем колбеков в С++ - то они нужны для повторного использования кода, где действия в ф-ции зависят от ситуации и определяются пользователем (другим программистом)

Пример тому использование ф-ции-колбека записи данных в библиотеке libcurl
( https://www.cyberforum.ru/blog... 1.html#a_6 )
1
 Аватар для aryabush
7 / 7 / 0
Регистрация: 13.02.2013
Сообщений: 22
22.04.2013, 11:54  [ТС]
Возможно события и были бы удобнее... Но у меня была необходимость использовать CallBack, а нормальное разъяснение как же это реализовать, найти было очень тяжело. Так что я просто делюсь. Блог мне не доступен, а как это сделать через FAQ пока не знаю, я не такой опытный форумчанин...
Статья о библиотеке libcurl очень интересная)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
22.04.2013, 16:12
aryabush, ссылку на тему добавил сюда:
Библиотека VCL и сопутствующие материалы Tips & Tricks
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.04.2013, 16:12
Помогаю со студенческими работами здесь

Один из возможных способов восстановления файлов
Здравствуйте! Я смотрел обзор одного трояна-шифратора, и перед его запуском сделали снимок через Total Uninstall и посмотрели извинения в...

Callback функции
Есть запрос вроде этого: somevar.select(data, function(response) { // callback code. }); Как отсюда вытащить данные...

Callback функции
Зачем они нужны? Можете привести пример, где конкретно без них не обойтись. Также есть вопрос по array_walk(), вот пример из документации: ...

Передача callback функции
Всем добрый день! Как описать и реализовать метод OLE класса для принятия обработчика, чтобы тот вызывался в контексте клиентского...

Callback функции в Windows
Нужно получить runtime способность вызыва любой callback функции. Например обрабочики wndproc, enumwindows, enumfont, enumprocess и другие,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru