2009-02-20 4 views
3

Будучи новым для wxWidgets Мне нужен пример кода, как заставить wxTimer работать.Базовый wxWidgets Timer

The reference дает 3 способа его использования, но не включает в себя пример кода для любого из них. Оптимально, я хотел бы получить метод 2.

ответ

6

(из образцов/виджетов/gauge.cpp :)

Настройки вашего мероприятия константа

enum 
{ 
    GaugePage_Reset = wxID_HIGHEST, 
    GaugePage_Progress, 

провода события в вашу функцию члена (с помощью константы события)

EVT_TIMER(GaugePage_Timer, GaugeWidgetsPage::OnProgressTimer) 

, а затем вам необходимо создать и запустить ваш таймер.

static const int INTERVAL = 300; // milliseconds 
m_timer = new wxTimer(this, GaugePage_Timer); 
m_timer->Start(INTERVAL); 

В документации второй метод, я думаю, что нужно понять, что ваш основной объект Window ISA wxEventHandler, поэтому таймер подключается к «этому» (вашему окну) при его создании. Теперь, когда события идут к вашему окну, EVT_TIMER, вероятно, самый эффективный способ подключить его к вашей функции OnProgressTimer.

Вам нужна функция для вызова тоже ...

void GaugeWidgetsPage::OnProgressTimer(wxTimerEvent& event) 
{ 

Это не должно быть более сложным, чем это.

+0

спасибо, эта ссылка побудила меня выяснить, что я объявляю таймер неправильно. Вам нужно объявить указатель wxTimer, а затем получить доступ к нему таким образом. – DShook

+0

Наслаждайтесь! Мне очень нравится программирование wxWidgets. Внутри ... есть тонкие скрытые функциональные возможности в ... обслуживании html-страниц из .zip-файлов, используя стек eventHandlers для управления состоянием приложения, используя window.pushEventHandler(). Он блестящий и чистый. –