Domanda

Ho ottenuto un modulo wxWidgets con una barra di avanzamento su di esso e aggiorno l'avanzamento di un thread usando il mio evento wxWidget personalizzato. Funziona bene, tranne per il fatto che il modulo mostra l'aggiornamento dei progressi solo quando sposto il mouse. Ho provato ad aggiungere Refresh () e Update () dopo aver impostato il nuovo valore di avanzamento ma senza fortuna.

Sto facendo qualcosa di sbagliato o è un problema con wxWidgets?

Windows 7 Visual Studio 2005 c ++

Modifica:

Questo è il mio callback thread corrente:

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

E l'aggiornamento dei progressi:

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

        m_pbProgress->SetValue(event.info->precent);
        Refresh(false);
    }
}
È stato utile?

Soluzione

L'ho risolto. È a causa di SetTopWindow (); Quando rimuovo questa riga dalla mia app, tutti gli eventi vengono elaborati a tempo debito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top