Una delle domande più ricorrenti fra i neofiti del C++ è: "come si crea una finestra?". Al che i più esperti ripetono per l'ennesima volta che stanno dando troppe cose per scontate e che non è detto che un programma debba per forza avvalersi di form e bottoncini, e che anzi il C++ standard non prevede un bel niente per l'interfaccia grafica.

Dopo una simile risposta, spesso, i novizi più disorientati lasciano perdere, pensando che il C++ sia un mondo troppo "lontano dalla realtà". In effetti il software mainstream pullula di form e bottoncini.

Quali sono le librerie/framework GUI più significative per il C++? E perché non è stato mai stilato uno standard a riguardo? Questa serie tenta di dare un po' di risposte prendendo in considerazione uno dei GUI framework più stabili e maturi: wxWidgets.


120 Novembre 2007 Un painbrush portabile con C++

wxWidgets dispone di un nutrito parco di controlli, ma a volte bisogna comunque sporcarsi le mani e disegnare direttamente sulle finestre. In questo articolo si illustrano i concetti e le tecniche fondamentali per il disegno sui 'contesti di dispositivo'. Come esempio, viene presentato lo scheletro di un "paintbrush portabile". Se volete andare avanti nello studio del framework, arricchire questa rudimentale applicazione di disegno può rivelarsi un ottimo esercizio.

Immagine corrotta

La Figura 3 è stata tagliata male. Questa è la versione corretta:

Sorgenti

Clicca qui per scaricare i sorgenti dell'articolo.


119 Ottobre 2007 Posizionamento dei controlli

Uno dei segni più evidenti di scarsa professionalità è lo sviluppo di applicazioni “statiche”, che impongono all’utente schermate impossibili da personalizzare. wxWidgets permette di realizzare layout con caratteristiche avanzate, con poche righe di codice. Quest'articolo illustra alcuni strumenti fondamentali, come sizer, pannelli, splitter window, e termina introducendo un vero e proprio framework: wxAui.

Sorgenti

Clicca qui per scaricare i sorgenti dell'articolo.


118 Settembre 2007 Metti d'accordo Linux e Windows

Cominciamo a lavorare col framework di WxWidgets. In questo appuntamento si mostra come creare semplici finestre e gestire l’applicazione.

Sorgenti

Clicca qui per scaricare i sorgenti dell'articolo.


117 Agosto 2007 Il C++ scopre le finestre!

Perché la gestione delle interfacce grafiche non è neanche menzionata nello standard C++ (e non lo sarà per lungo tempo, probabilmente mai)? Come dovrebbe essere La Libreria Ideale, e come siamo messi, invece, nella cruda realtà? Belle domande. In quest'articolo si tenta una risposta articolata confrontando soluzioni come GTK+, QT, SmartWin, MFC. Dopodiché si incomincia a vedere l'architettura di wxWidgets, con tutti i suoi pregi e difetti, fino alle istruzioni per una corretta (si spera) installazione, e la stesura di un programma minimo.

Note (di dolore):

Mese dopo mese, mi sono abituato alla Maledizione Dei Laterali. Bibliografie volatilizzate, interi boxini decimati. Credevo di aver visto tutto. Credevo che niente mi potesse più stupire. Credevo male. Questo mese non solo sono spariti tutti i boxini (jackpot!): ne è spuntato uno nuovo su "l'autore". Che non sarebbe male, se parlasse di me; invece è spuntato fuori il boxino di Federico Paparoni - validissimo collaboratore di IoProgrammo. Oltre che di contribuire a diffondere il virus del Java (che di per sé è già un crimine), Federico è soprattutto reo di avere scritto l'articolo pubblicato nelle pagine immediatamente precedenti il mio. Così il suo boxino è stato appiccicato sul mio articolo (ovviamente. Poteva capitare, è capitato.). Ecco i laterali mancanti.

Bibliositografia:

La documentazione ufficiale di wxWidgets è probabilmente il riferimento principale per lo sviluppatore esperto, ma è poco adatta ai principianti.

Il libro Cross-Platform Gui Programming with wxWidgets, scritto da Julian Smart (lo stesso autore della libreria) e liberamente scaricabile qui è invece un buon punto di partenza e un primo riferimento per il framework. Inoltre contiene delle buone appendici sull’installazione di wxWidgets su varie piattaforme, in modo più dettagliato rispetto a quanto visto su queste pagine.

Chi preferisse un approccio pratico via-tutorial, può trovarne alcuni introduttivi e altri specifici, qui.

Ma ricordatevi che wxWidgets è open-source e la principale fonte di riferimento, nonché l'ultima corte di appello per interfacce e implementazioni resta sempre il codice sorgente!

Se volete dare un’occhiata anche a QT, il libro C++ GUI Programming with Qt 4, di Blanchette/Summerfield (liberamente scaricabile qui) potrà esservi molto utile.

Quando il gioco si fa duro...

Se avete problemi a installare il framework potete provare (oltre a guardare se ci sono errata corrige sul mio sito, o a mandarmi un e-mail) a installare DialogBlocks, strumento che vedremo nel corso di questa serie. e che permette non solo di “disegnare” form e controlli in maniera RAD, ma anche di installare facilmente wxWidgets sulla propria piattaforma.


Copyright Roberto Allegra, 2006. All rights reserved.
I codici sorgenti sono presentati in via provvisoria per gentile concessione della Edizioni Master, che ne detiene ogni diritto.