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
Se Internet potesse migliorare la tua vita, che cosa vorresti?
Conoscere amici e comunicare
Risparmiare sugli acquisti
Innamorarti
Guadagnare tanti soldi
Imparare (lingue, culture, cucinare, suonare, ecc.)
Lavorare di meno
Altro

Mostra i risultati (3601 voti)
Dicembre 2025
Migliaia di aerei A320 a terra. Perché è una buona notizia
Arduino passa a Qualcomm: la comunità hacker esplode di malcontento
Piracy Shield, i provider italiani presentano il conto: 10 milioni di euro l'anno
Il Digital Omnibus è una resa dell'Unione Europea?
Novembre 2025
MediaWorld vende iPad a 15 euro per errore, adesso li vuole tutti indietro
Riscaldano casa con un datacenter in giardino: giù i costi delle bollette
I Baschi Grigi della Cybersicurezza
Telemarketing aggressivo, operativo il filtro che impedisce lo spoofing dei numeri mobili
Cloudflare in tilt. Migliaia di siti irraggiungibili, servizi bloccati in tutto il mondo
E se Internet sparisse?
Windows diventerà un Agentic OS. Microsoft entusiasta, gli utenti temono guai
Database con dati personali di 3,8 milioni di italiani pubblicato nel dark web
I crescenti segni dell'esplosione
WhatsApp apre le porte a Telegram, Signal e altri servizi: inizia l'era delle chat cross-app
Con Gemini Google Maps ti parla davvero: indicazioni vocali, punti di riferimento e AI
Tutti gli Arretrati
Accadde oggi - 6 dicembre


web metrics