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
Quale metodo utilizzi nell'apprendere un linguaggio di programmazione?
Corsi tradizionali in aula.
Internet e corsi online.
Libri e manuali.
Altro.
Non programmo.

Mostra i risultati (2938 voti)
Aprile 2024
La IA di Microsoft che fa parlare (e cantare) le fotografie
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
La fine del mondo, virtuale
Tutti gli Arretrati
Accadde oggi - 24 aprile


web metrics