2009-02-20 6 views
3

Étant nouveau pour wxWidgets, j'ai besoin d'un exemple de code pour savoir comment faire fonctionner le wxTimer.Basic wxWidgets Timer

The reference donne 3 façons de l'utiliser, mais ne comprend pas de code d'échantillon pour l'un d'entre eux. Idéalement, j'aimerais que la méthode 2 fonctionne.

Répondre

6

(à partir des échantillons/widgets/gauge.cpp :)

Mettre en place des constantes de votre événement

enum 
{ 
    GaugePage_Reset = wxID_HIGHEST, 
    GaugePage_Progress, 

Fil l'événement à votre fonction membre (à l'aide constante de votre événement)

EVT_TIMER(GaugePage_Timer, GaugeWidgetsPage::OnProgressTimer) 

puis vous devez créer et démarrer votre minuterie.

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

Dans la documentation, la deuxième méthode que je pense que la chose à comprendre est que votre objet fenêtre principale ISA wxEventHandler, de sorte que le temporisateur se câline jusqu'à 'ceci' (votre fenêtre) lorsque vous le créez. Maintenant que les événements vont dans votre fenêtre, EVT_TIMER est probablement le moyen le plus efficace de câbler cela à votre fonction OnProgressTimer.

Vous aurez besoin de la fonction à appeler aussi ...

void GaugeWidgetsPage::OnProgressTimer(wxTimerEvent& event) 
{ 

Il ne devrait pas être plus difficile que cela.

+0

merci, cette référence m'a amené à découvrir que je déclarais que la minuterie était fausse. Vous devez déclarer un pointeur wxTimer et y accéder de cette façon. – DShook

+0

Amusez-vous! J'apprécie vraiment la programmation de wxWidgets. Il y a des tonnes de fonctionnalités cachées à l'intérieur ... servant des pages html depuis des fichiers .zip, en utilisant une pile de eventHandlers pour gérer l'état de l'application en utilisant window.pushEventHandler() C'est génial et propre. –