void GB.Post ( void ( * func )() ,
long param )
Объявляет об отзыве подпрограммы, которая будет вызвана в следующем цикле событий.
Используйте эту функцию, если вы не можете выполнить часть кода немедленно.
Но будьте внимательны : если вы хотите использовать объект в отзыве, ссылайтесь на него с GB.Ref, чтобы предотвратить его разрушение (destroying) интерпретатором до его вызова при отзыве.
Например, GB.Post
используется для воссоздания событий
Click,
когда вы выбираете меню, поскольку
немедленное воспроизведение события в QT
slot (QT слот)
вызывает крушение интерпретатора !
Эта функция вызывает ловушку post интерпретатора, так что он знает, что новая post подпрограмма была зарегистрирована.
Пример :
/* This is how menu event are sent in the QT component */
static void send_menu_event(CMENU *menu)
{
GB.Raise(menu, EVENT_Click, 0);
GB.Unref((void **)&menu);
}
void CMenu::activated(int id)
{
CMENU *menu = ... ;
// Don't send the event immediately
// GB.Raise(menu, EVENT_Click, NULL);
GB.Ref(menu);
GB.Post((void (*)())send_menu_event, (long)menu);
}