Ogni finestra creata da un’applicazione Windows deve basarsi su una classe che riguarda stili, font, colori, posizioni ed altro. Quando un’applicazione registra una nuova classe di finestre, questa diventa utilizzabile da tutti i programmi in esecuzione e quindi è importante non creare conflitti e dare nomi di classi il più possibile univoci. Vediamo ora la struttura che determina una classe:
typedef STRUCT tagWNDCLASS { WORD style; long (FAR PASCAL* lpfnWndProc) (); int cbClsExtra; int cbWndExtra; HANDLE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPSTR lpszMenuName; LPSTR lpszClassName; } WNDCLASS;
Windows fornisce già alcune classi di finestre predefinite, ma molte applicazioni devono definirne di personalizzate. Vediamo i singoli elementi della struttura ed il loro significato:
style – Definisce lo stile della finestra, questi valori possono essere combinati tramite l’operatore OR bit a bit ( | ):
lpfnWndProc – Riceve un puntatore alla funzione di gestione delle finestre che si occuperà di tutte le operazioni su di essa.
cbClsExtra – Fornisce il numero di byte che devono essere allocati dopo la struttura della classe della finestra, può avere valore nullo.
cbWndExtra – Fornisce il numero di byte che devono essere allocati dopo l’istanza della finestra, può avere valore nullo.
hInstance – Definisce l’istanza dell’applicazione registrando la classe di finestre, non può avere valore nullo.
hIcon – Handle dell’icona utilizzata nella finestra, può avere valore nullo, nel qual caso viene visualizzata l’icona predefinita di Windows.
hCursor – Handle del cursore quando questi si trova sulla client area della finestra, può avere valore nullo, nel qual caso verrà visualizzato il cursore predefinito di Windows.
hbrBackground – Può trattarsi di un colore di sistema di Windows:
oppure di un colore RGB. Ovviamente questi colori di sistema sono quelli predefiniti il cui valore si trova nel registro di sistema e dipente dal tema corrente di Windows. Se questo valore è nullo, la finestra verrà colorata secondo un colore standard.
lpszMenuName – Stringa contenente il nome di un menu nelle risorse, può essere nullo.
lpszClassName – Stringa contenente il nome della classe da registrare.
Una volta riempita la struttura con tutti i valori è possibile registrarla con la funzione RegisterClass.
Nel prossimo appuntamento parleremo del ciclo dei messaggi.
<< Lezione Precedente – Inizio Corso – Lezione Successiva >>
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→