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

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

21.04.2013, 23:07. Показов 10018. Ответов 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
8488 / 6155 / 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
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru