Newsgroup: it.comp.lang.c++
Titolo: Realizzare un'applicazione MDI particolare.....

Sto realizzando un'applicazione in VC++ 6.
Ho generato l'applicazione con il wizard MFC specificando l'uso
dell'interfaccia MDI (multiple document interface).
L'applicazione che sto realizzando pero' e' particolare in quanto i
documenti aperti non vengono aggiornati dall'utente ma bensi' si aggiornano
in base a dei dati che l'applicazione deve ricevere dalla porta seriale. Ora
l'interfaccia e' fatta ma non riesco a capire come integrare
nell'applicazione la parte di codice che legge e scrive sulla porta seriale
(codice che ho gia' pronto).
Tale codice e' la parte fondamentale dell'applicazione e deve girare
dall'apertura alla chiusura dell'applicazione per fornire i dati con cui
riempire i documenti aperti.
Come posso fare ad integrarlo?
E' possibile farlo facendo l'override della funzione Run della classe
CWinApp in modo che questa continui a fare quello che faceva prima (gestire
l'interfaccia immagino) ?
Oppure devo usare un thread separato?
Anche in quest'ultimo caso sono ben accetti suggerimenti.
Grazie
Anselmo
--
Posted from 
mta14-acc.tin.it
 [212.216.176.45]
via Mailgate.ORG Server - 
http://www.mailgate.org

>Anche in quest'ultimo caso sono ben accetti suggerimenti.
Se devi leggere in modo continuo dalla porta seriale ti conviene sicuramente creare un altro thread che si occupera' della seriale e comunichera' al programma principale le modifiche da apportare alla finestra principale. Ti consiglio di utilizzare dei messaggi dal thread alla finestra principale perche' so che ci sono alcuni problemi di MFC con il multithreading.
Antonio

 wrote in message
000001bf592f$0090fc60$2faad8d4@anselmo...
: Sto realizzando un'applicazione in VC++ 6.
: Ho generato l'applicazione con il wizard MFC specificando l'uso
: dell'interfaccia MDI (multiple document interface).
: L'applicazione che sto realizzando pero' e' particolare in
quanto i
: documenti aperti non vengono aggiornati dall'utente ma bensi'
si aggiornano
: in base a dei dati che l'applicazione deve ricevere dalla porta
seriale.
errore n.1 : nel caso di un comportamento "anomalo" di un
programma, non usare MAI wizard.
(per anomalo intendo tutto tranne le applicazioni hello world o
demo)
: l'interfaccia e' fatta ma non riesco a capire come integrare
: nell'applicazione la parte di codice che legge e scrive sulla
porta seriale
: (codice che ho gia' pronto).
: Tale codice e' la parte fondamentale dell'applicazione e deve
girare
: dall'apertura alla chiusura dell'applicazione per fornire i
dati con cui
: riempire i documenti aperti.
: Come posso fare ad integrarlo?
nella classe view, no di sicuro. nella classe document,
nell'archiviazione con
CDoc.Serialize(...){    
    if (IsLoading()){
       ... codice per la lettura dei dati ...
    }
    else {
       ... codice per condire l'insalata ... ;-)
    }
// l'archivio non ti serve, a meno che non 
// debba salvare il risultato, nel caso usi 
// un'altra classe doc per il salvataggio e la lettura
}
: E' possibile farlo facendo l'override della funzione Run della classe
: CWinApp in modo che questa continui a fare quello che faceva prima (gestire
: l'interfaccia immagino) ?
: Oppure devo usare un thread separato?
: Anche in quest'ultimo caso sono ben accetti suggerimenti.
 
Lascia perdere la Run().
casomai, crea due funzioni con lettura sulla porta (read_port_data() e write_port_data())
con accesso asincrono, poi crei due thread con AfxBeginThred() usando due variabili globali per i dati letti e scritti, che userai in Serialize().
Su NT puoi anche usare una NamedPipe in lett
ura/scrittura, e usare ReadFile() e WriteFile()
Su Win9x, crei due pipe anonime, 1 per lettura e 1 per scrittura.
Poi fammi sapere.
--
____ __         __,_      __  _____
\  _\_ \  ___ _/ / /\  /\/  \/ / _/ It is better to reign in Hell
 \  _ \ \/ _ '/ , |\ VV / / / / _/ Than serve in Heaven.- MILTON
  \_,_/\_\_,_/_/|_| \__/\__/_/_/
      -- the one and only --     e-mail : 
blak...@tiscalinet.it
                                ICQ    : 59394345
The UNIX Guru's View of Sex:
$unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep