Corso di Visual C++ (seconda lezione)

Prime operazioni con le finestre. In questa puntata, come promesso, vedremo come scrivere in una finestra e come farci qualche disegnino.



[ZEUS News - www.zeusnews.it - 11-06-2001]

Leggi la prima puntata del corso

Tanto per iniziare create un nuovo progetto, proprio come abbiamo fatto nella puntata precedente, quindi come nome scegliete ‘prg2'.

Dopo avere seguito tutte le impostazioni di default, ma aver scelto nella seconda finestra il tipo di documento ‘Single Document' avete davanti l'ambiente di lavoro vuoto; a questo punto se cliccate sulla prima voce ‘prg2 classes' della scheda ClassView sulla sinistra, vi compaiono 6 voci che in ordine sono (se il progetto lo avete chiamato prg2): CAboutDlg, CMainFrame, CPrg2App, CPrg2Doc, CProg2View e Globals.

Queste sono le classi contenute nel vostro progetto e si riferiscono, nell'ordine partendo dall'alto: alla classe per la finestra About, alla classe finestra principale, alla classe applicazione, alla classe documento e alla classe vista.

Sicuramente vi state chiedendo perché tutte queste classi per un programma che sostanzialmente disegna solo una finestra sullo schermo e compie poche altre operazioni, beh, la risposta è semplice: è il Wizard che ci ha preparato tutto ciò di cui avremo bisogno quando tra qualche puntata scriveremo delle applicazioni serie.

Infatti tutte queste classi sono contenitori per funzioni che hanno un ben preciso significato: la classe finestra principale contiene tutti i gestori dei menu, della barra degli strumenti, del titolo e di stato; la classe vista si occupa dell'output grafico della finestra e della stampa, la classe documento si occupa del salvataggio e caricamento dei file, la classe applicazione si occupa di cose un po' più complesse che per ora non prenderemo in oggetto.

Questa metodologia di programmazione si chiama "documento-vista", e permette di scrivere programmi molto ordinati, leggibili e di facile correzione. Potremmo infatti anche scrivere tutto in una sola classe, ma immaginate un po' quando dovremo effettuare una compilazione di un listato di 4000 righe di codice ed il compilatore impiega tantissimo tempo, oppure quando dovremo trovare una funzione di cui non ricordiamo il nome e lo dovremo fare tra altre duecento! Questi sono comunque solo i vantaggi meno rilevanti dell'architettura documento-vista, quelli più importanti li capiremo in seguito.

Proviamo ora a scrivere del testo nella finestra: cliccate sulla voce CPrg2View facendo così apparire tutte le funzioni di questa classe, fate quindi doppio clic sulla voce OnDraw(CDC* pDC), in tal modo il Visual C capirà di dover aprire il file contenente la funzione da voi scelta, ma non finisce qui, farà anche si che il corpo della funzione venga visualizzato al centro dello schermo!, cosa volete di più!

OnDraw come avrete capito dal nome è appunto la funzione che cercavamo, ci permette di disegnare sullo schermo tutto ciò che vogliamo e in più ci permette anche delle ‘facility' per la stampa che vedremo in seguito.

A video dovrebbe apparirvi qualcosa del genere:


/////////////////////////////////////////////////////////////////////////////
// CPrg2View drawing

void CPrg2View::OnDraw(CDC* pDC)
{
	CPrg2Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

Qui vediamo che il Wizard ha scritto già del codice per noi, innanzitutto tramite la funzione GetDocument() recupera un puntatore all'oggetto documento e ne verifica la validità, quindi ci dice nel commento che nelle righe successive possiamo aggiungere il codice per il disegno.

Diciamo subito, che se cercate di trovare nel codice le istanziazioni delle classi, non le troverete; ciò perché sono nascoste dietro al ‘Framework', cioè all'infrastruttura dell'applicazione su cui si basa il nostro codice.

Infatti ‘in girò non troverete il codice per disegnare cursori, barre degli strumenti, finestre..., ma solo delle funzioni che richiamate permettono di fare ciò; infatti le loro implementazioni fanno parte della libreria MFC che a sua volta richiama le funzioni API standard.

Prima di disegnare qualcosa è anche bene capire cosa sia un contesto di dispositivo, o CDC per gli addetti ai lavori (come avrete visto un puntatore a tale classe è passato come parametro della funzione).

Il CDC (Class Device Context) è una classe che ci permette di astrarre il dispositivo su cui andremo a disegnare, in modo da poter adottare le medesime funzioni sia che scriviamo su schermo, che su stampante che su un plotter.

Questa classe ci offre tutte le funzioni per disegnare testo, cerchi, ellissi, linee...

Avremo modo di approfondire questi concetti, però ora cerchiamo di disegnare un bel cerchio sullo schermo:

Scrivete ciò che segue dopo il commento:

pDC->Ellipse(CRect(100,100,300,300));

La funzione Ellipse del contesto di dispositivo prende come parametri un oggetto CRect, tramite il quale definiamo le coordinate dei quattro angoli del rettangolo in cui è inscritta l'ellisse.

Provate da voi a fare delle prove con le funzioni LineTo, Rectangle e Polygon, aiutandovi magari con l'help in linea, e poi provate a stampare, avrete un spiacevole sorpresa!

Leggi la terza puntata del corso

A cura di Software Planet il centro di riferimento per i programmatori e i webmaster italiani.
Su Software Planet è possibile trovare oltre a chat, newsletter, librerie di migliaia di script, forum di discussione, anche corsi online gratuiti e scaricabili di Visual C++, Visual Basic, Java, Delphi, ASP, HTML, Perl, PHP, JavaScript, CGI, DirectX, SistemiOperativi, SQL, C con Linux, WML, Logica ed Automi, Privacy, Flash, Dreamweaver, Fireworks, ActionScript...
Per iscriversi alla newsletter mandare un'email vuota a subscribe@softwareplanet.net

Se questo articolo ti è piaciuto e vuoi rimanere sempre informato con Zeus News ti consigliamo di iscriverti alla Newsletter gratuita. Inoltre puoi consigliare l'articolo utilizzando uno dei pulsanti qui sotto, inserire un commento (anche anonimo) o segnalare un refuso.
© RIPRODUZIONE RISERVATA

Commenti all'articolo (0)


La liberta' di parola e' un diritto inviolabile, ma nei forum di Zeus News vige un regolamento che impone delle restrizioni e che l'utente e' tenuto a rispettare. I moderatori si riservano il diritto di cancellare o modificare i commenti inseriti dagli utenti, senza dover fornire giustificazione alcuna. Gli utenti non registrati al forum inoltre sono sottoposti a moderazione preventiva. La responsabilita' dei commenti ricade esclusivamente sui rispettivi autori. I principali consigli: rimani sempre in argomento; evita commenti offensivi, volgari, violenti o che inneggiano all'illegalita'; non inserire dati personali, link inutili o spam in generale.
E' VIETATA la riproduzione dei testi e delle immagini senza l'espressa autorizzazione scritta di Zeus News. Tutti i marchi e i marchi registrati citati sono di proprietà delle rispettive società. Informativa sulla privacy. I tuoi suggerimenti sono di vitale importanza per Zeus News. Contatta la redazione e contribuisci anche tu a migliorare il sito: pubblicheremo sui forum le lettere piu' interessanti.
Sondaggio
Che cosa ti trattiene dall'installare Linux?
Tutti quelli che conosco hanno Windows: con chi potrei scambiare dati e software?
Non ho voglia di imparare un nuovo sistema operativo e dei nuovi programmi.
Alcuni miei componenti hardware non vengono riconosciuti.
Ci sono alcuni software che utilizzo sotto Windows che mi sono indispensabili.
Semplicemente non sento l'esigenza di passare a Linux.
Ho intenzione di farlo nel prossimo futuro.
Nessun motivo mi impedisce di passare a Linux, infatti già lo utilizzo con soddisfazione.

Mostra i risultati (12068 voti)
Aprile 2024
MS-DOS 4.00 diventa open source
Enel nel mirino dell'Antitrust per le bollette esagerate
TIM, altre ''rimodulazioni'' in arrivo
L'algoritmo di ricarica che raddoppia la vita utile delle batterie
Hype e Banca Sella, disservizi a profusione
Falla nei NAS D-Link, ma la patch non arriverà mai
La navigazione in incognito non è in incognito
Le tre stimmate della posta elettronica
Amazon abbandona i negozi coi cassieri a distanza
Marzo 2024
Buone azioni e serrature ridicole
Il piano Merlyn, ovvero la liquidazione di Tim
Falla nelle serrature elettroniche, milioni di stanze d'hotel a rischio
L'antenato di ChatGPT in un foglio Excel
La valle inquietante
La crisi di Tim e la divisione sindacale
Tutti gli Arretrati
Accadde oggi - 30 aprile


web metrics