Corso di Visual C++ (sesta lezione)

Le classi finestra, GDI, file e database. Completiamo in questa puntata la descrizione della gerarchia delle classi MFC; si rimanda alla parte 5 del corso per la discussione delle classi CObject, CCmdTarget e CDocument e per il grafico della gerarchia delle classi.



[ZEUS News - www.zeusnews.it - 03-07-2001]

Leggi la quinta puntata del corso

La classe che offre il supporto delle finestre è CWnd e ne incapsula la maggioranza delle proprietà (barra del titolo, bordi, scroll-bars ...) e contiene molte funzioni membro che permettono di personalizzare il comportamento degli oggetti CWnd. Tale classe non viene quasi mai usata direttamente, ma vengono utilizzate sue derivate come CFrameWnd, CView e CDialog.

CFrameWnd specifica il comportamento della finestra principale di livello superiore (barre del titolo, dei menu, degli strumenti, di stato ecc.), CView è la base per le classi di vista di livello inferiore mentre CDialog incapsula il comportamento delle finestre di dialogo.

A partire dalla versione 4 della MFC ci sono anche dei 'wrapper' per alcuni nuovi tipi di controllo; ad esempio CListView è un wrapper per il controllo CListBox.

I wrapper sono, in modo molto semplicistico, dei contenitori ( ing. to wrap = avvolgere) per delle funzioni di altre classi e che in tal modo possono essere utilizzate in modo più semplice senza riscrivere molto codice. Tra le classi finestra che utilizzeremo più di frequente ci sono quelle di vista; tutte quante sono derivate da CView e per tal motivo è bene approfondire un po' l'argomento.

E' possibile utilizzare anche direttamente CView, ma in alcuni casi è bene essere a conoscenza delle sue classi derivate per evitare di scrivere codice che troviamo già nella MFC. Ad esempio una classe derivata da CView è CScrollView che ci permette di utilizzare le barre di scorrimento orizzontali e verticali in modo molto semplice, c'è poi la classe CCtrlView che è la classe madre per CEditView, CListView, CRichEditView e CTreeView che sono i wrapper per i controlli di cui abbiamo parlato sopra.

La classe CFormView implementa una classe con una vista di tipo controllo di dialogo, mentre ad esempio CRecordView è utilizzabile per implementare un database.

Infine una classe nuova è CHtmlView che implementa le funzioni per un browser Internet come Internet Explorer.

Una classe importantissima è la classe CDC (Class Device Context) che implementa le funzionalità del contesto di dispositivo di Windows. Tale Device Context è la GDI (Graphic Device Interface) che è responsabile dell'output della nostra applicazione su stampante, video e altri dispositivi di uscita.

Quasi tutte le funzioni di CDC si comportano allo stesso modo sia che l'output sia rivolto allo schermo che alla stampante e ciò permette una enorme flessibilità nello scrivere il codice del nostro programma.

Le classi più importanti derivate da CDC sono CWindowDC, CPaintDC, CClientDC e CMetaFileDC. Queste classi semplificano l'utilizzo delle funzioni di disegno e ad esempio richiamano automaticamente le funzioni BeginPaint e EndPaint di CDC in risposta ai messaggi WM_PAINT.

Quando si disegna qualcosa si utilizzano gli oggetti grafici della GDI come quelli derivati da CGdiObject. Tale classe deriva varie altre classi per ogni strumento di disegno come CBrush per i pennelli, CPen per le penne e CBitmap per le bitmap.

Quando si utilizza uno strumento di disegno, lo si deve prima selezionare nel contesto di dispositivo con la funzione SelectObject, quindi dopo l'uso si deve ripristinare lo stato precedente del CDC; questa operazione è apparentemente noiosa, ma è necessaria perchè la GDI è una risorsa globale di Windows.

Un'altra classe che può risultare utile è CFile ed implementa varie funzioni di gestione dei file: dalla loro creazione alla successiva modifica e lettura. Dispone anche di funzioni per estrarre il path dal nome del file e per ricavarne gli attributi.

Inoltre questa è la classe base per CSocketFile che permette di trattare con i sockect e CInternetFile che ci permette l'accesso e la modifica dei file su web.

MFC ci mette perfino a disposizione delle classi per la gestione dei database ODBC (Open Database Connectivity) e alcune per i database DAO (Data Access Object). Tali classi ci permettono di accedere ai record delle basi di dati registrate nel sistema (tramite DSN). Dopo l'accesso al database è possibile aggiungere o eliminare record o semplicemente esplorare il database con tutte le funzionalità di ricerca e selezione a cui siamo abituati.

Le classi per i database ODBC sono CDataBase e CRecordSet, mente quelle per accedere ai database DAO sono CDaoWorkspace e CDaoDatabase.

Leggi la settima 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
Vuoi scaricare la canzone 'Yesterday' dei Beatles; esistono varie opzioni su Internet. Quale file scarichi tra i seguenti?
Yesterday-Beatles-Song.scr
Beatles_All_songs.zip
Beatles_Yesterday.mp3.exe
Betles-Yesturday.wma

Mostra i risultati (1680 voti)
Giugno 2026
Recesso online, dal 19 giugno arriva il pulsante obbligatorio su tutti gli e-commerce
Il simulatore di volo di Google Earth
Windows Ready Print rivoluziona la stampa: addio ai driver proprietari
Debutta Euro-Office tra le proteste di LibreOffice
Lo strumento che ti dice quali modelli IA puoi eseguire davvero sul tuo PC
ChatGPT, arriva Lockdown Mode
Iliad lancia il suo FWA: modem 5G, attivazione rapida e velocità fino a 300 Mbps
Microsoft: sistema operativo e app sono al capolinea. È l'ora degli agenti IA
Quousque tandem abutere, Ursula, patientia nostra?
Grave falla in 7-Zip
Maggio 2026
Denunce ai Carabinieri sull'app IO
Apre Virtual OS Museum: 75 anni di sistemi operativi
Crisi delle memorie, la luce in fondo al tunnel
Copilot invade Excel
49.000 persone senza elettricità: il fornitore preferisce alimentare i datacenter della IA
Tutti gli Arretrati
Accadde oggi - 20 giugno


web metrics