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
Negli ultimi due anni, quante volte hai formattato l'hard disk del PC?
Nessuna
Una
Un paio
Quattro o cinque
Una decina
Di più

Mostra i risultati (4395 voti)
Ottobre 2025
Guida autonoma in 60 città italiane: Italia primo laboratorio europeo per i test
Infotainment in auto, nuove regole: i veicoli smart dovranno avere un'autoradio FM/DAB+
Mozilla introduce Firefox VPN: navigazione cifrata nel browser. Privata e gratuita
Windows 11 25H2: debutta il menu Start con layout dinamico e integrazione con lo smartphone
DAZN chiede 500 euro di risarcimento a 2000 utenti già multati per pirateria. E minaccia cause
Energia elettrica: il prezzo cambia ogni 15 minuti. Fasce orario stravolte, la sera costa di più
Clothoff bloccata in Italia: il Garante Privacy ferma l'app che spoglia le persone con la IA
Open Printer, stampante inkjet open source. Cartucce ricaricabili, design modulare e niente DRM
Amazon Prime elimina la prova gratuita in Italia: i giorni di test passano da 30 a 7. E si pagano
Settembre 2025
SPID a pagamento, l'era gratuita è finita: le Poste introducono un canone annuale
YouTube ammette: "Obbligati dall'amministrazione Biden a sospendere certi canali"
Commodore 64 Ultimate convince: boom di vendite, acquisizione anticipata
Cookie, si va verso il consenso unico. L'Europa valuta l'integrazione nei browser web
Google lancia l'app "unificata" per la ricerca in Windows: documenti locali, web e Google Drive
Poste Italiane, i dati di un milione di utenti nel dark web. L'azienda: "Non ci hanno attaccati"
Tutti gli Arretrati
Accadde oggi - 21 ottobre


web metrics