Newsgroup: it.comp.programmare.win32
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

 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

 Come posso fare ad integrarlo?
Due threads, uno per leggere e uno per scrivere su seriale. Il resto
lo lasci al normale message dispath-ing di windows. 
Okkio alla sincronizzazione tra threads . 
Il resto lo puoi fare da solo. 
Ti consiglio di studiarti l'esempio MTTY che trovi su MSDN.
Fausto.