Newsgroup: it.comp.lang.c++
Titolo: Un po' di domande su Visual C++

Cari niusgruppici,
da un po di tempo, dopo aver fatto pratica di C in lungo e in largo, mi 
sono recentemente avvicinato al mondo del C++ e in particolare alla 
programmazione in Windows, con lo strumento che, a giudizio di tutti gli 
interpellati, e il migliore nel settore, Visual C++. Premetto che ho 
trovato qualche difficolta nell'adattarmi al nuovo ambiente, pur 
essendomi preparato alla novita studiando il C++ con il libro di Bruce 
Eckel e conioscendo gia abbastanza di programmazione Windows 
dall'assembler. In particolare molte cose mi risultano oscure, ed e 
proprio di questo che mi piacerebbe che qualcuno di gia esperto mi desse 
qualche delucidazione. Il primo dilemma riguarda le MFC: venuto in 
possesso di un libro sul VC++ ho notato che la prima cosa che viene 
suggerita e di partire dal Wizard e creare una applicazione MFC che, a 
suo parere dovrebbe rendere tutto piu semplice. Ora, dopo aver smanettato 
qua e la mi rendo conto che l'ambiente per programmare la mia neonata 
applicazione MFC assomiglia tragicamente al Visual Basic: in sostanza si 
tratta di implementare un po di funzioni in risposta ad altrettanti 
eventi, all'oscuro di tutto cio che accade al di sotto. E' tutto molto 
bello e comodo, ma mi sorge un dubbio: non e che questa facilita e 
apparente comodita e accompagnata dalla lentezza tipica delle 
applicazioni Visual Basic? Inoltre chi mi garantisce che il codice 
sottostante la simpatica interfaccia ad alto livello sara veloce, 
efficiente e non terribilmente ingombrante? Infine queste MFC, 
esattamente, che cosa sarebbero? librerie, ok, ma cosa hanno di piu bello 
delle altre? Mi piacerebbe sentire il parere di programmatori di varia 
estrazione, pro e anti Microsoft, e i loro consigli a me che sto 
cominciando. Inoltre nei miei numerosi smanettamenti con l'ambiente ho 
cercato di creare una applicazione definita nel Wizard "Win32 
Application", per scoprire che e esattamente quello che mi aspettavo, si 
comporta un po come l'assembler e chiama le stesse funzioni: che 
vantaggi e che svantaggi ci sono a creare le apllicazioni cosi, operando 
direttamente sulle API senza passare dalle MFC? Spero che qualcuno mi 
possa dare queste informazioni, magari anche in privato alla mia mail.
	Mush-Herpes
-- 
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
Aisicchiù #41982464
Per contattarmi via mail eliminate "NOSPAM"
"Evviva la disco music, col tipico ritmo 
incalzante di cassa rullante e charleston."
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤


Nessuno ti impedisce di utilizzare direttamente le funzioni win32, però MFC
anche se mal progettata, è più pratica da utilizzare.
Ciao
Daniele.

 possa dare queste informazioni, magari anche in privato alla mia mail.
Per prima cosa il C++. Puoi programmare con le MFC come in VB, ma se davvero
vuoi utilizzarle senza perdere tempo, pensa sempre che davanti a te hai un
compilatore C++, e in testa i principi della programmazione a oggetti.
Il mio consiglio è semplicissimo: per adesso butta via maghi e streghe, e
scrivi il codice che serve tutto a mano, in fondo lo scheletro minimale vuole
davvero poco più di una decina di linee di codice, e il codice generato dal
mago è davvero incapibile da un inesperto, e tutt'altro che minimale. Un
ottimo testo è "Programming Windows 95 with MFC" di Jeff Prosise, Microsoft
Press. Ne esiste un'ottima traduzione in italiano, che porta lo stesso
titolo, edito da Mondadori Informatica. Per la verità sono due volumi (la
spesa è poco meno che proporzionale) piuttosto vecchi, e non si fa accenno a
OLE, che, dice l'autore, richiederebbe un intero volume (forse però ne è
uscita una nuova edizione, non so). Comunque in libreria ci sono un buon
numero di libri sull'argomento, e se vuoi un consiglio lascia perdere quelli
che nominano il Visual C++: è facile che questi facciano uso dei wizard, per
dimostrare le sconvolgenti capacità visuali dell'IDE.
Per capire cosa succede sotto MFC, devi conoscere il funzionamento di
Windows, il suo SDK e le API. Se hai già maturato una buona esperienza a
questo livello, puoi passare alle MFC e ti troverai bene, altrimenti non
avrai mai un'idea precisa di cosa sta succedendo. Qualcuno, dopo aver provato
i due modi di programmare, ha preferito continuare con l'SDK, forse perché
più vicino al SO, forse perché è paragonabile all'assembly (eh... tempi
andati!), ma certo perché non doveva scrivere codice per OLE, che
notoriamente è pesantissimo (impossibile?) da implementare "a mano". MFC
semplifica la vita perché implementa al suo interno lo scheletro di una
applicazione "OLE Compliant", e questo é già un ottimo motivo per scegliere
MFC rispetto a SDK.
Roberto Cavada

IMO, stai facendo due grossi errori:
1) confondere il C++ con una sua implementazione (VC++),
     ma a quanto pare si tratta di un errore tipico di molti neofiti :(
2) Vuoi imparare il C++, ma allo stesso tempo sviluppare applicazioni
     windows.
Il mio spassionato consiglio e` quello di scordarti windows e realizzare
semplici applicazioni console (ovvero niente grafica, niente finestre,
niente code di messaggi....) in stile dos. Abbandona qualsiasi libro sul
VC++ (salvo che per capire come compilare) e affidati unicamente
a testi tipo quello di Eckel. Impara prima a dominare la complessita`
del linguaggio (almeno delle cose + importanti) e solo dopo usalo per
realizzare applicazioni GUI, altrimenti ti ritrovi ad avere a che fare
con molti piu` problemi (il C++ in se, MFC (o altro), API e l'ambiente
stesso di sviluppo).
Tutto cio` che e` estraneo al C++ potrebbe facilmente portarti fuori
rotta e non riusciresti a capire il perche` delle cose.
Paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

direttamente sulle API senza passare dalle MFC? 
Con MFC ti trovi l'esistenza in genere piu' semplificata, a costo di una certa
farraginosita' in piu; usando direttamente le API devi scrivere piu' codice ma
hai un controllo piu' completo su quello che fai. (i sorgenti generati dai wizard
non sono quello che definirei comprensibile)

sviluppo dell'applicazione.
Mica tanto; il valore aggiunto del wizard e'  che sa come mettere assieme
le cose secondo il modello di MFC. Se usi MFC, tanto vale che usi anche
il wizard; se no ti tocca imparare quello che il wizard sa gia' fare benissimo.

motivo!
Per gli stesi motivi che hanno fatto di microsoft la piu' grande sw house del mondo.
La piu' grande, non la migliore; le due cose non sono assolutamente sinonimi.

 La piu' grande, non la migliore; le due cose non sono assolutamente sinonimi.
Sono assolutamente daccordo, ma non ha importanza. Un programmatore professionista, il
cui tempo costa, che deve investire il suo tempo per lo studio di nuove tecnologie, deve
scegliere la strada più conveniente. Sarà triste, ma è così. Qualsiasi tecnologia
Microsoft si studi, porta alle stesse conclusioni. Vedi ad esempio DCOM vs CORBA.

direttamente sulle API senza passare dalle MFC?
Un po' ti hanno già risposto (automatizzare dei comportamenti standard molto
tediosi da scrivere ed error prone), un po' spero di averlo fatto io con il
richiamo
all'organicità. Se, lungo la strada, studi un po' di OOD, ti accorgerai di poter
trarre ulteriori vantaggi da MFC, ma qui bisogna appunto lasciar da parte lo
wizard e iniziare a fare le cose a mano.
Ciao e buon lavoro.
AB
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Andrea Baruzzo
Via Circonvallazione, 26
Muzzana del Turgnano (UD) - Italy
e-mail: 
andrea....@ud.nettuno.it
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Microsoft si studi, porta alle stesse conclusioni. Vedi ad esempio DCOM vs CORBA.
Trovo che sia un approccio eccessivamente "arrendevole", vero e` che la 
posizione di M$ ci obbliga a fare certe scelte... ma non sempre e` 
necessario farle.


motivo!
Sai, per chi si e' voluto scavare la fossa da solo (vedi OWL), e' il
minimo.......
Bye.


Beh, se non impari come funzionano le classi MFC non vai molto lontano
comunque! Allora usa Delphi o il Visual Basic, ma scordati i progetti di
dimensioni medio-grandi!
Consiglio vivamente di capire la filosofia che sta dietro al C++ e agli
oggetti prima di utilizzare MFC! Potete a questo proposito leggere gli
ottimi articoli di C. Pescio su Computer Programming disponibili anche sul
suo sito.
Ciao
Daniele.

 abituato ai tool RAD...  ;-P
Effettivamente. Inoltre da qualche parte (putroppo al momento non ricordo
dove, ma sto cercando di ritrovarlo) ho letto che il pattern
Model-View-Controller sta subendo un processo di evoluzione e una delle
possibili direzioni lo porterebbe proprio nella direzione della
Document-View.
MM

>"un mago" che scriva il codice al posto nostro?!
E questo mi ricorda molto una digressione su P%T di computer programming, 
di Carlo Pescio..
Diceva esattamente la stessa cosa, a dimostrazione del fatto che le 
scelte progettuali di casa MS raramente sono azzeccate, in tutti i 
campi..
I Wizard non servono a niente, semmai un IDE intelligente che automatizza 
la scrittura di certe parti di codice "meccanico" (che dovrebbe essere 
comunque ridotto al minimo, le macro di MFC sono quanto di piu' orrendo 
nel design si possa incontrare) , tipo l'IDE del BCB++ che realizza un 
ambiente rad sopra un motore di modifica/parsing del sorgente C++ , senza 
utilizzare Virtual Machine o altre cose strane come nel VB (e , del 
resto, con questo linguaggio non si poteva altrimenti)

 Document-View.
Scusate la monotonia, ma anche questo argomento era validamente trattato in
uno degli articoli di C. Pescio...
Ciao
Daniele.

 campi..
Sono completamente d'accordo!
Ciao
Daniele.


Puoi usare tranquillamente MFC e, all'occorrenza, richiamare qualsiasi funzione
Win32 da qualunque posto in qualsiasi momento. MFC č stata progettata tenendo
presente questo vincolo (č per questo che č, per certi aspetti, poco OO). Quindi
tutta questa questione sul presunto maggior controllo usando l'SDK non ha
ragione d'esistere.
In caso contrario, posta un bel esempio.
