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 писал(а): т.е. программа в некий момент говорит - "эй, винда, скажи мне в это ухо, когда юзер клавишу надавит!"
и, когда юзер отдавит палец до посинения, пытаясь нажать на клавишу, винда завопит программе "на! вот твоя клавиша, подавись!" О! Самое человечное описание колбеков! В цитаты! |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |