Newsgroup: it.comp.programmare.win32
Titolo: MFC, .NET o wxWidget ?

Ciao a tutti,
grazie per la risposta precedente. Quale framework fra questi da
meno problemi di bachi, portabilità e soprattutto documentazione.
Come scaricarli.
Soprattutto la differenza fra MFC e .NET qual'è?
grazie anticipatamente per le risposte

 Come scaricarli.
Se ce ne fosse uno che ha tutti questi vantaggi, probabilmente non 
esisterebbero gli altri.
Dipende da quali sono le tue priorità:
- MFC è in giro da parecchi anni (e quindi si suppone stabile), non 
è per nulla portabile (AFAIK) se non ricorrendo ad emulatori (Wine o 
simili) e si trovano in giro libri, articoli e moltissimi esempi. 
E' vincolata a uno specifico linguaggio (C++) e all'ambiente di 
sviluppo Visual C++ (anche se mi pare che Borland o Symantec la 
adottarono all'interno del loro ambiente IDE per un certo periodo).
- .NET è più recente, anche se è già arrivato alla versione 2. Anche 
per .NET c'è molta documentazione. Non dipende da un linguaggio ma 
ne supporta diversi (C++,C#,VB,python e altri). Esiste una versione 
per linux/unix che si chiama Mono ma, AFAIK, non è aggiornata 
all'ultima release e non supporta tutte le funzioni della versione 
microsoft.
- wxWindows è quello che conosco meno (e non conosco un wxWidgets, 
quindi penso che tu ti sia confuso). E' nato per essere portabile (e 
quindi batte sicuramente gli altri da questo punto di vista) ma, 
vista la sua minor diffusione, è più difficile trovare libri e 
articoli che ne parlino. Se non mi sbaglio è vincolato a C e C++.
-- 
Valter Minute
(the reply address of this message is invalid)
(l'indirizzo di reply di questo messaggio non è valido)

 articoli che ne parlino. Se non mi sbaglio è vincolato a C e C++.
wxWidgets è in C++. Poi esistono numerosi bindings... da Python a Erlang
passando per .NET :-)
A me personalmente non piace come libreria. 
Ci sono da menzionare anche QT (scritto in C++ ma con bindings) che sono
cross platform ma hanno una licenza che richiede un pagamento per
Windows se si vuole fare qualcosa di commerciale.
Poi c'è GTK che è scritto in C e ha bindings per qualsiasi linguaggio
che mi viene in mente. Niente problemi di licenza e cross platform come
gli altri due.
-- 
Lawrence - 
http://www.oluyede.org/blog
"Nothing is more dangerous than an idea
if it's the only one you have" - E. A. Chartier

 cross platform come gli altri due.
Non è GPL? Questo potrebbe essere un problema di licenza, se il 
nostro amico vuole sviluppare qualcosa di assolutamente closed 
source.
A questo punto si può aggiungere un sacco di roba, da ATL/WTL a 
Java!
Bisognerebbe capire cosa deve fare il nostro amico perchè tutti 
questi sistemi, come dicevo, hanno pro e contro e non tutti sono 
adatti a qualsiasi tipo di applicazione. 
L'accento sulla portabilità va bene, ma può darsi che sia necessario 
preferibile sviluppare UI diverse sui diversi S.O. piuttosto che 
convivere con le limitazioni dei vari toolkit e comunque valutare il 
vantaggio della portabilità rispetto alle riduzioni in termini di 
funzioanlità e ai costi che l'uso di un toolkit portabile comporta 
(il software devi comunque testarlo bene su tutte le piattaforme!).
Citare sistemi così diversi tra loro (una libreria C++ 
monopiattaforma, un sistema "a virtual machine" e una libreria che 
nasce per la portabilità) mi fa pensare che il nostro amico abbia le 
idee un po' confuse.


 idee un po' confuse.
Aspettiamo delucidazioni allora -)


 io). Non c'è alcun problema di licenza.
Altra informazione utile. Non l'ho mai visto utilizzare da roba 
closed source e pensavo fosse solo GPL.


 closed source e pensavo fosse solo GPL.
No no per grazia di dio. Se fosse GPL creerebbe enormi problemi anche
all'opensource :-)
Le librerie messe su GPL sono una "bastardata" in partenza. Difatti
Stallman s'è pentito di aver creato la LGPL.
WingIDE è un IDE per Python closed source fatto in GTK se ti interessa
(
wingide.com
 mi pare)


 microsoft.
Ne ho sentito parlare e mi sembra interessante. 

 informazioni. Internet è il mio canale principale.
Vorrei spezzare una lancia a favore di wxWidgets (wxWindows era
il vecchio nome, che e' stato cambiato perche' qualcuno da Redmond
ha cominciato a pestare sulla coglionera ;-)).
wxWidget e' un framework multipiattaforma, supportato da un'infinta'
di compilatori. E' ottimamente documentato sul sito 
www.wxwidgets.org
,
ed esiste un libro (cross-paltform gui programming with wxWidgets,
ISBN 0-13-147381-1) ordinabile alla Hoepli.
A me wxWidget piace. Al contrario di MFC, sono riuscito a realizzare
il primo "Hello world" dopo aver letto un tutorial trovato in rete.
Ha il difetto di generare codice piuttosto corposo, se il linking e'
statico, un programma che visualizza una finestra che non fa
nient'altro che chiudersi, genera un codice di quasi 1 mega.
Chiaramante si puo' usare il linking dinamico, ma e' piuttosto
difficile trovare le dll giuste su macchina diverse dalla propria.
wxWidget non usa STL, pertanto se si devono relaizzare, ad es.,
collezioni di oggetti che non siano stringhe (per cui esiste
wxArrayString), bisogna fare un po' di pacciughi. Niente di
complicato, ma la prima volta lascia un po' perplesso. La scelta
di non usare stl e' dovuta al fatto che wxWidgets e' nato prima
di STL, e successivamente STL e' stato inglobato lentamente nei
compilatori supportati. OpenWatcom, ad es. ha un supporto ancora
molto parziale di STL.
Ogni tanto si trova anche qualche bug, ma il framework e'
attivamente sviluppato e i bug vengono risolti piuttosto
velocemente. Esiste un NG apposito comp.soft-sys.wxwindows
dove non e' raro trovarci gli sviluppatori di wxWidgets
(Vadim Zeitlin e' uno dei top poster di quel ng).
Io ritengo che sia semplice, potente e pure divertente. Lo uso
per svilupparci in C++, qualcuno con cui ho discusso sull'argomento
ha criticato l'interfaccia Python, ma non avendo mai usato python,
non posso dirti se la sua fosse solo antipatia personale, o se
questa interfaccia sia veramente pessima.
Per la realizzazione delle interfacce utente, esistono diversi
strumenti grafici. Quello che ho usato (o per meglio dire quello
che ho provato ad usare) e' stato DialogBlocks (che ho trovato
nel CD che accompagna il libro)... Ho preferito farmi le interfacce
a mano, non e' troppo complicato, una volta capito il meccanismo.
wxWidget ha a disposizione sicuramente meno ammennicoli di quelli
disponibile per MFC, che sia la tua soluzione, dipende da cosa
devi farci. Io direi di prendere wxWidget in considerazione e di
non scartarlo sopo perche' non e' targato MS. :-)
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 questa interfaccia sia veramente pessima.
Mmm può essere entrambe le cose. wxPython (il wrapper di wxWidgets) è
usatissimo nel mondo Python. Sul newsgroup italiano ogni 3 post ce 'è
uno che parla di wx :D
Poi ci sono varie scuole di pensiero su wxPython, c'è a chi piace e a
chi no.. Non credo che sia pessima l'interfaccia, se no non mi
capaciterei di tutti sti utenti, anche newbie.


 C:\>iao Angelo
Simplicio

 quasi 1 mega.
Ripeto che il mio citare rapidamente wxWidget è dovuto solo alla mia 
ignoranza, non al fatto di considerarla la peggiore delle soluzioni 
proposte (anche perchè MFC non mi piace per nulla e per la UI uso 
WTL/ATL o il framework).
Programmo soprattuto su WindowsCE e quindi non ho una grande 
necessità di sviluppare applicazioni multipiattaforma e su device 
embedded alla portabilità spesso si preferisce la compattezza del 
codice.
IMHO il punto debole dei framework multipiattaforma è che per 
funzionare discretamente bene su sistemi tanto diversi non 
funzionano in maniera ottimale su nessuno. A volte dividere bene lo 
strato UI dalle funzioni "generiche" e in quelle usare STL o altre 
librerie (sempre portabili) non collegate alla UI e riscrivere 
interfacce utente diverse per i vari sistemi (magari per diverse 
versioni dello stesso sistema con interfacce utente diverse, tipo 
pocketPC e smartphone) può essere una scelta migliore.


 bisogno di usare direttamente la libreria.
Non ho detto che sia impossibile usare STL con wxWidget. wxWidget
non usa STL internamente ed e' bene non mischiare codice che fa
uso di STL con codice che fa uso di wxWidgets. Ma se in un file
usi esclusivamente STL e in altri usi esclusivamente wxWidgets,
puoi linkarli tranquillamente assieme. Con un po' di accortezza,
questi moduli possono anche comunicare :-)
HTH


 pocketPC e smartphone) può essere una scelta migliore.
Giusto.
GTK piace a molti probabilmente perchè è solo UI.
Inoltre è scritto in C, quindi puoi usarlo da tantisimi linguaggi (C++ e
Python per citarne due).
Gli altri framework in C++ si complicano la vita perchè hanno la pretesa
di reinventarsi tutto il loro type system.
Oggi con l'STL e Boost ben supportati ci sono meno problemi, ma ormai il
danno è fatto (ed è uno dei motivi per cui ho lasciato perdere il C++).
Saluti  Manlio Perillo

 pocketPC e smartphone) puň essere una scelta migliore.
wxWidgets usa l'interfaccia nativa della piattaforma su cui gira:
hanno douvto fare delle scelte per nascondere le differenze
esistenti tra i diversi sistemi, questo a scapito di una certa
ottimizzazione. Fino ad ora non mi sono sentito molto penalizzato
da questo: alla fine le mie interfacce sono piuttosto semplici, e
quello che mi mette a disposizione wxWidget e' molto piu' che
abbondante.
Inizialmente ho provato ad usare MFC, ma dire che mi e' stato
indigesto e' poco. Ho tentato anche di usare  ATL/WTL, ma la
documentazione era assolutamente inesistente. wxWidgets, e'
stato per me un ottimo compromesso come facilita' di utilizzo,
documentazione disponibile, supporto e prestazioni.
