|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Aug 2009
Messaggi: 287
|
[C++] Programmi con finestre, le uniche soluzioni sono API o Frameworks?
Ciao a tutti, premetto che non so perchè ma non mi funziona la ricerca del forum.
Sto studiando il C++ all'università e sono arrivato a creare qualche programmino con una qualche utilità. Ho letto sul testo grazie al quale cerco di approfondire le mie conoscenze (il Deitel) che il C++ è un linguaggio orientato agli oggetti molto potente ed anche cercando su google ho trovato parecchie persone che ne parlano bene. Il punto è che le informazioni che ho trovato sono molto vecchie (anni) e vorrei avere un vostro giudizio su questo linguaggio e vorrei sapere se effettivamente con il C++ è consigliabile programmare o se oggigiorno si usa altro. In particolare vorrei sapere come fare per creare dei programmi con delle finsetre in windows: su google ho letto che si usano le API o i Framework, sono le uniche due soluzioni o posso risolvere utilizzando visual studio 2008? Grazie a tutti in anticipo |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2774
|
Usando VisualStudio 2008 useresti il framework .NET se non vado errato quindi saresti a posto.
Non mi esprimo sul C++ in quanto l'ho studiato da poco e ancora non ci ho scritto nulla. |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Aug 2009
Messaggi: 287
|
Ma le utilizzerei in modo automatico? Cioè senza capire quello che effetivamente sto facendo o devo studiarmi prima per bene i framework?
Poi leggevo in rete ed ho letto che alcuni utilizzano il delphi per programmare e lo trovano davvero molto semplice ed efficace , altri invece lo trovano troppo semplice perchè è un derivato del BASIC. ![]() Grazie per la risposta |
![]() |
![]() |
![]() |
#4 | |||
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
![]() Quote:
il C++ in genere é un'ottima scelta quando il software che devi realizzare deve fare uso massiccio di API, ma naturalmente possono esserci anche altri contesti. Quote:
tornando al termine "framework" generico, ne esistono diversi e comunque tutti non fanno altro che implementare una logica di alto livello e facile da usare che si basa sulle API; io questi framework preferisco chiamarli "librerie" o "toolkit" grafici. con Visual Studio vengono fornite due librerie, MFC e ATL; di norma si usa la prima, la seconda é orientata allo sviluppo COM/OLE/ActiveX. inoltre all'interno di Microsoft é stata sviluppata una'altra libreria, non ufficiale, che si chiama WTL, si basa su ATL e mira ad essere un'alternativa lightweight ad MFC. WTL non viene fornita col Windows SDK, si scarica a parte dal sito suo e richiede ATL. oltre a queste librerie esistono anche toolkit non Microsoft che tipicamente oltre a permetterti di sviluppare applicazioni grafiche per Windows ti permettono di farlo anche per altri sistemi, come Linux, scrivendo un solo codice portabile e generalmente senza compilazioni condizionali. uno di questi toolkit é wxWidgets, opensource. un altro é GTK+. un altro ancora che sta andando molto é Qt di Trolltech. se vuoi puntare sul FOSS scegli wxWidgets perché GTK+ é scritto in C e quindi ti fará venire mal di testa o poco piu. per quanto riguarda invece le API: la stragrande maggioranza delle volte dovrai evitarle: sono di livello basso e per di piu quelle di Windows tengono molto alla compatibilitá col C, che significa che sono pallose da usare (devi sempre stare a riempire strutture, controllare valori di ritorno e gestire errori, per il minimo risultato devi scrivere dozzine di righe di codice); é proprio per semplificare l'uso delle API che nascono librerie come MFC, ATL e WTL; se devi programmare solo per Windows usa quelle, altrimenti usa wxWidgets o Qt. |
|||
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
comunque non vedo perché aggiungere altra carne al fuoco: l'Object Pascal di Delphi é un linguaggio che si colloca ad un livello molto simile al C++ (termine "livello" inteso come nelle espressioni "basso livello" e "alto livello"), in piu i vari wizard rendono Visual Studio comodo praticamente quanto Delphi. se hai cominciato a studiare C++ prosegui con quello e le applicazioni grafiche per Windows creale in Visual Studio; come vantaggi avrai che conoscerai un linguaggio molto piu usato dell'Object Pascal e userai software Microsoft e quindi presumibilmente integrato meglio col sistema sottostante. |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
Io darei un'occhiata anche alle QT. Sono scritte in c++, sono portabili e hanno un ottimo editor (QTDesigner)
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
![]() il caro Torav avrá scorso a malapena e rapidamente la tua richiesta e il mio ultimo post e non ha proferito ne' A ne' B, subito dritto a Qt. Qt sta andando molto ![]() |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
Quote:
![]() Il fatto è che le sto cominciando ad usare anche io (anche se con python) ma confesso la mia colpa di non aver letto a fondo le risposte ![]() |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Secondo me su Windows per C++ ci sono solo due strade: - C++ managed e .Net - C++ normale e Qt Le altre strade, cioè WTL ed MFC, imho sono sconsigliabili. Le MFC sono obsolete (lo erano 10 anni fa) e sono troppo legate alle API di Windows. Molti dei metodi delle classi MFC non sono altro che adattamenti uno ad uno delle API. Inoltre devi comunque gestirti i messaggi che rendono di una complessità assurda anche semplicemente cambiare lo sfondo di una label. WTL sono più semplici delle MFC e meno verboso, ma anche qui c'è sempre da fare la gestione dei messaggi (anche se in minor quantità rispetto alle MFC) e da usare decine di macro. Inoltre le WTL sono un framework molto limitato, infatti coprono solamente la parte della GUI. Cosa che ti obbligherà a ricorrere alle API anche per le cose più semplici. C++ managed è il C++ per la piattaforma .Net. I vantaggi di usare la piattaforma .Net sono tanti. A partire da una maggior produttività e da una minore verbosità rispetto a WTL e MFC. Certo bisogna ricorrere a compromessi perché il C++ managed è un C++ un po' stravolto. Le Qt sono, secondo me, il migliore framework per C++ unmanaged su Windows. Il SDK include l'ottimo IDE QtCreator che ti permette di sviluppare in modo visuale la GUI. Il sistema slot-signal è lineare e semplice da implementare. L'IDE permette inoltre di nascondere il passaggio di precompilazione fatto per il framework, uno dei dettagli delle Qt che potevano dare fastidio un tempo. Ti assicuro che la produttività è comparabile a quella di .Net, al contrario di MFC e WTL. Ti meraviglierai di quante cose si possono fare scrivendo una semplice riga di codice o, addirittura, senza nemmeno scriverne una ![]() Il framework non è limitato come quello di WTL, infatti si possono gestire molti aspetti non legati alla GUI direttamente con le Qt. |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Mar 2009
Messaggi: 753
|
|
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: Aug 2009
Messaggi: 287
|
Inizio ringraziandovi tutti per le risposte davvero ben documentate.
ieri avevo scaricato Wx-DevC++ , ora proverò Qt creator e vi farò sapere. Se avete qualche link a qualche tutorial o guida per quest'ultimo mi fate un gran piacere! Grazie ancora! ![]() |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Cestina subito senza se e senza ma
![]() Per il libro: http://www.qtrac.eu/C++-GUI-Programm...t-4-1st-ed.zip Non è aggiornato alle ultime release di Qt e non tiene conto del lavoro svolto da QtCreator, ma è gratuito. |
![]() |
![]() |
![]() |
#13 | ||||||||
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
Quote:
Quote:
Quote:
![]() Quote:
Quote:
Quote:
![]() Quote:
![]() uno dei miei primi programmi scritti in C# era una utility per tenere traccia dei miei esami universitari; la GUI l'ho creata con Windows Forms e ci ho messo mezza giornata senza mai aver usato Windows Forms. con MFC e i wizard di Visual Studio non sarei arrivato a questi livelli, magari avrei dovuto smanazzarci tre giornate anziché una, ma di certo non un mese... ![]() |
||||||||
![]() |
![]() |
![]() |
#14 | |||
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Quote:
Quote:
Sì, il wordpad...e basta. Qualsiasi altra cosa, anche semplicemente cambiare il colore di sfondo di un controllo, è un macello. |
|||
![]() |
![]() |
![]() |
#15 | ||||||
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Prova a fare un layout degno di questo nome con le MFC: far si che non si scompagini tutto quando ingrandisci la finestra è un incubo. Anche le wxWidgets nonostante abbiano una certa somiglianza con le MFC sono molto più semplici da usare. In ogni caso niente a che vedere con le QT, come semplicità d'uso e potenza espressiva della libreria (tra le tante: i fogli di stile e l'animation framework) Quote:
Quote:
Il runtime di visual studio (quale versione?) poi non mi risulta installato di default. In ogni caso c'è sempre il link statico a disposizione. Non capisco perchè nessuno si scandalizzi per un programma che per fare le peggio minchiate occupa non meno di 30MB di memoria (dove la misura è il Gigabyte), ma se un software ha un eseguibile di 10MB (dove la misura è il TeraByte) debba essere un problema. E non parliamo della duplicazione del caricamento delle librerie perchè l'occupazione di memoria di un programma C++ linkato staticamente è comunque una frazione di uno .NET. Oltretutto ti svincoli da quello che potrebbe fare l'utente (o altri programmi) sulla macchina, in quanto il tuo software è fondamentalmente autonomo, se non dalle librerie effettivamente di default di windows (non disinstallabili o comunque decisamente non corruttibili senza rendere il sistema inusabile). Quote:
Quote:
Quote:
|
||||||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:43.