GB.Post

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);
}