![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: 1 Всего: 1 |
Изучал книжку Ч.Калверта "Программирование под Win32. Освой самостоятельно". Там говорится про callback-функции.
Если я правильно понял, то это такие функции, которые вызывает Windows. Причем в Win16 их экземпляры надо было создавать при помощи MakeProcInstance. Подскажите, надо ли их в Win32 описывать как CALLBACK или же это пережитки Win16? -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
| Peter |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: 1 Всего: 1 |
Для вызова функции операционной системой необходимо должным образом описать правило ее вызова. В winuser.h (или в winbase.h - не помню) можно прочитать
или
в зависимости от установок системы. Вопрос закрыт. -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
||||
|
|||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
|
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 8 Всего: 18 |
Коллбэки "в основном" вызываются процессами. Я думаю так, но никогда этим не занимался.
|
|||
|
||||
| Да гость я... |
|
|||
|
Unregistered |
Во времена Win16 CALLBACK определялся как FAR PASCAL (или __far __pascal), т.е. соглашение вызова (порядок помещения аргументов в стек, ответственость за очистку стека, декорация имени и т.д.) ф-ции WinProc было в стиле Паскаля. В Win32 CALLBACK, а также WINAPI определены как __stdcall. Соглашения вызова ВСЕХ Win32 API ф-ций - __stdcall. А в общем случае callback-функция это такая, к-рая вызывается в нек-ром framework-коде по определённой для нее переменной-указателю. И в общем случае все, что известно о callback-ф-ции - это её прототип. Тело callback-ф-ции должно быть определено пользователем и присвоено вышеуказанной переменной-указателю, тогда этот некий framework сможет ее вызвать, т.к. framework обычно инициализирует эту переменную нулем, а тогда и вызывать нечего. Любой обработчик события, скажем CButton::DBlClick() в том же MFC - также callback-функция. Т.е. известен её прототип, имеется её переменная-указатель, к-рая = 0, покуда юзер не напишет конкретный handler, адрес к-рого будет присвоен соответствующей переменной-указателю на ф-цию объекта данного класса (CButton в данном примере). |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 4 Всего: 47 |
||||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |