Таймеры в абстрактном интерфейсе Gui API - PullRequest
0 голосов
/ 03 апреля 2011

Вот основная идея того, что я хочу сделать:

Каждый виджет, когда часть графического интерфейса имеет доступ к менеджеру событий.Менеджер событий является полиморфным, поэтому он содержит функции из базовых API-интерфейсов графика / таймера.Что я хочу сделать, так это разрешить виджетам регистрировать таймеры, где они будут вызывать функцию, которая будет внутренне вызывать менеджер событий для регистрации таймера.Вот проблема, когда виджет впервые создается, он не является частью графического интерфейса.Поэтому никто никогда не сможет зарегистрировать таймеры в конструкторе виджетов.

Я подумал о том, что я мог бы ставить запросы в очередь, и когда виджет становится частью графического интерфейса пользователя и может получить доступ к менеджеру событий, он может затем удалить запросы из очереди, но проблема в том, что он не 'Это действительно позволяет мне сделать что-то вроде:

Timer *timer = registerTimer(0.17);

if(timer == NULL)
{
   //uh ohs
}
else
{
   timer->start();
}

Возможно, есть более эффективные способы решения моей проблемы?

Спасибо

1 Ответ

0 голосов
/ 03 апреля 2011

Управление событиями и предоставление возможностей синхронизации - это две совершенно разные функции, поэтому я бы попытался разделить менеджер событий на 2 отдельных класса.Тогда вы можете сделать TimerManager синглтоном и зарегистрировать таймеры из любых мест, которые вам нравятся.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...