Domanda

Sto scrivendo un'applicazione Windows CE in C ++ di applicare direttamente il WINAPI. In questa applicazione ho analizzare un file di testo, che può o non può essere di grandi dimensioni e, quindi, può o non può prendere un po 'a carico; e come vorrei aggiungere funzionalità per caricare file attraverso la rete wireless, ho pensato che sarebbe stato meglio aggiungere una barra di avanzamento.

Il mio obiettivo è quello di visualizzare la barra di avanzamento in una finestra di dialogo modale, impedendo in tal modo l'utente di interagire con la finestra principale. Un thread viene creato per eseguire il caricamento in background, lasciando il thread principale per aggiornare l'interfaccia grafica.

Tuttavia, utilizzando impedisce EndDialog() me per tornare al codice che carica il file fino a quando la finestra è stata chiusa. Ovviamente voglio mostrare la finestra di dialogo e poi caricare il carico, aggiornando periodicamente i progressi dal thread in background. A questo punto so solo di due opzioni per aggirare questo:

  1. Creare la finestra di dialogo utilizzando CreateDialog, modificare il gestore di messaggi per accogliere i messaggi designati per la finestra di dialogo, disattivare la finestra principale e, infine, creare il thread in background.
  2. Creare il thread in background in uno stato iniziale sospensione, creare la finestra di dialogo utilizzando DialogBoxParam passando lungo l'ID del thread, e quando si cattura il WM_INITDIALOG riprendere il filo.

Anche se uno qualsiasi di questi due sarebbe probabilmente il lavoro (sto appoggiato verso la seconda opzione), Sono curioso di sapere se questo è il modo in cui si suppone che le barre di avanzamento devono essere manipolati in un ambiente Windows - o se v'è un più snella, più intelligente modo di farlo.

scroll top