2009-06-23 8 views
2

J'ai un formulaire wxWidgets avec une barre de progression et je mets à jour la progression d'un thread en utilisant mon propre événement wxWidget personnalisé. Cela fonctionne bien, sauf le fait que la forme ne montre que la mise à jour de progrès lorsque je bouge la souris. J'ai essayé d'ajouter Refresh() et Update() après que la nouvelle valeur de progression soit définie mais sans chance.wxWidgets ne se mettra pas à jour jusqu'à ce que la souris se déplace

Est-ce que je fais quelque chose de mal ou est-ce un problème avec wxWidgets?

Windows 7 Visual Studio 2005 C++

Edit:

Ceci est mon rappel courant de fil:

EVENT_CALLBACK_PTR_CPP(onProgress, UploadProgPage) 
{ 
    updateInfo* temp = static_cast<updateInfo*>(ptr); 

    if (temp) 
    { 
     wxOnUploadUpdateEvent event(wxEVT_UPLOAD_UPDATE, GetId(), temp, UPDATE_PROGRESS); 
     event.SetEventObject(this); 
     GetEventHandler()->AddPendingEvent(event); 
    } 
} 

Et la mise à jour des progrès:

void UploadProgPage::onUpdate(wxOnUploadUpdateEvent &event) 
{ 
    if (event.type == UPDATE_PROGRESS) 
    { 

     m_pbProgress->SetValue(event.info->precent); 
     Refresh(false); 
    } 
} 

Répondre

1

ça a marché . C'est à cause de SetTopWindow(); Lorsque je supprime cette ligne de mon application, tous les événements sont traités en temps voulu.

Questions connexes