Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб дек 15, 2018 13:33

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Вызов callback слов в SPF
СообщениеДобавлено: Пн окт 06, 2008 07:55 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Как создать callback слово?
Мое виденье такое, это правильно?
Код:
\ слово которое будет вызываться из callback
: [display]
NOOP
;

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

_________________
Меня нет, не будет и не было.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 06, 2008 14:48 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
В общем оно вот так решается:
Код:
\ слово которое будет вызываться из callback
: [display]
NOOP
;

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

_________________
Меня нет, не будет и не было.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 06, 2008 19:56 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Pretorian писал(а):
Как создать callback слово?
Мое виденье такое, это правильно?


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

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн окт 06, 2008 20:36 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1256
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Кстати да, я вот тоже пару раз встречал их - и мне тоже было бы интересно узнать про них.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 07, 2008 01:25 
callback — так называют слово, когда оно передается параметром в виде xt другим словам (которые по своему его потом вызывают). Часто оно передается на вход внешим функциям — в этом случае оно должно быть представлено не фортовым xt, а "машинной" точкой входа в подпрограмму, отвечающую известным соглашениям о вызове.


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


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 07, 2008 05:44 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Anonymous писал(а):
В случае с glutDisplayFunc, аккуратней будет:
' [display] 0 CELLS CALLBACK: display ( -- x ) \ т.к. у этого колбэка 0 входных параметров.
(и, по соглашению, надо вернуть одно значение).

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

_________________
Меня нет, не будет и не было.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 07, 2008 13:33 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4956
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
колбэк, это функция, которая вызывается асинхронно. Вызывает ее операционная система, для того, чтобы сообщить о каком-либо событии, которое предварительно запрашивала наша программа.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 02, 2009 17:26 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4956
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
копаюсь с колбэками и не пойму одной вещи.
НА ЧТО УКАЗЫВАЕТ EBP на момент попадания на начало _WNDPROC-CODE ?
как правильно обнаружить начало списка параметров колбэка?

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 02, 2009 17:39 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
mOleg писал(а):
колбэк, это функция, которая вызывается асинхронно. Вызывает ее операционная система, для того, чтобы сообщить о каком-либо событии, которое предварительно запрашивала наша программа.


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

так?

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт июн 02, 2009 17:48 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4956
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
WingLion писал(а):
так?

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

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вс июн 07, 2009 22:00 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1256
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
WingLion писал(а):
т.е. программа в некий момент говорит - "эй, винда, скажи мне в это ухо, когда юзер клавишу надавит!"
и, когда юзер отдавит палец до посинения, пытаясь нажать на клавишу, винда завопит программе "на! вот твоя клавиша, подавись!"

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

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB