Forth
http://fforum.winglion.ru/

Вызов callback слов в SPF
http://fforum.winglion.ru/viewtopic.php?f=18&t=1558
Страница 1 из 1

Автор:  Pretorian [ Пн окт 06, 2008 07:55 ]
Заголовок сообщения:  Вызов callback слов в SPF

Как создать callback слово?
Мое виденье такое, это правильно?
Код:
\ слово которое будет вызываться из callback
: [display]
NOOP
;

\ теперь у нас display это callback слово
' [display] WNDPROC: display
...
\ указываем на callback слово
' display glutDisplayFunc DROP

Автор:  Pretorian [ Пн окт 06, 2008 14:48 ]
Заголовок сообщения: 

В общем оно вот так решается:
Код:
\ слово которое будет вызываться из callback
: [display]
NOOP
;

\ теперь у нас display это callback слово
' [display] 4 CELLS CALLBACK: display
...
\ указываем на callback слово
' display glutDisplayFunc DROP

Автор:  WingLion [ Пн окт 06, 2008 19:56 ]
Заголовок сообщения: 

Pretorian писал(а):
Как создать callback слово?
Мое виденье такое, это правильно?


Было бы неплохо объяснить "по-русски", что это за "колбасные" слова такие?

Автор:  VoidVolker [ Пн окт 06, 2008 20:36 ]
Заголовок сообщения: 

Кстати да, я вот тоже пару раз встречал их - и мне тоже было бы интересно узнать про них.

Автор:  Гость [ Вт окт 07, 2008 01:25 ]
Заголовок сообщения: 

callback — так называют слово, когда оно передается параметром в виде xt другим словам (которые по своему его потом вызывают). Часто оно передается на вход внешим функциям — в этом случае оно должно быть представлено не фортовым xt, а "машинной" точкой входа в подпрограмму, отвечающую известным соглашениям о вызове.


В случае с glutDisplayFunc, аккуратней будет:
' [display] 0 CELLS CALLBACK: display ( -- x ) \ т.к. у этого колбэка 0 входных параметров.
(и, по соглашению, надо вернуть одно значение).

Автор:  Pretorian [ Вт окт 07, 2008 05:44 ]
Заголовок сообщения: 

Anonymous писал(а):
В случае с glutDisplayFunc, аккуратней будет:
' [display] 0 CELLS CALLBACK: display ( -- x ) \ т.к. у этого колбэка 0 входных параметров.
(и, по соглашению, надо вернуть одно значение).

На самом деле там нет разницы сколько будет параметров, они все равно грохнутся при выходе из слова, а вот за подсказочку спасибки, а то я по привычке как с обработчиком сообщений окна.

Автор:  mOleg [ Вт окт 07, 2008 13:33 ]
Заголовок сообщения: 

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

Автор:  mOleg [ Вт июн 02, 2009 17:26 ]
Заголовок сообщения: 

копаюсь с колбэками и не пойму одной вещи.
НА ЧТО УКАЗЫВАЕТ EBP на момент попадания на начало _WNDPROC-CODE ?
как правильно обнаружить начало списка параметров колбэка?

Автор:  WingLion [ Вт июн 02, 2009 17:39 ]
Заголовок сообщения: 

mOleg писал(а):
колбэк, это функция, которая вызывается асинхронно. Вызывает ее операционная система, для того, чтобы сообщить о каком-либо событии, которое предварительно запрашивала наша программа.


т.е. программа в некий момент говорит - "эй, винда, скажи мне в это ухо, когда юзер клавишу надавит!"
и, когда юзер отдавит палец до посинения, пытаясь нажать на клавишу, винда завопит программе "на! вот твоя клавиша, подавись!"

так?

Автор:  mOleg [ Вт июн 02, 2009 17:48 ]
Заголовок сообщения: 

WingLion писал(а):
так?

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

Автор:  VoidVolker [ Вс июн 07, 2009 22:00 ]
Заголовок сообщения: 

WingLion писал(а):
т.е. программа в некий момент говорит - "эй, винда, скажи мне в это ухо, когда юзер клавишу надавит!"
и, когда юзер отдавит палец до посинения, пытаясь нажать на клавишу, винда завопит программе "на! вот твоя клавиша, подавись!"

О! Самое человечное описание колбеков! В цитаты! :D

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/