I principi di funzionamento dell'interfaccia utente dei sistemi operativi della famiglia Windows si basano sul concetto di finestra. Il desktop, la barra delle applicazioni, gli elenchi, le finestre di dialogo, i pulsanti, i menu sono tutte finestre. Pertanto, infatti, per visualizzare un qualsiasi elemento dell'interfaccia, è necessario creare una finestra di Windows.
Necessario
- - compilatore;
- - SDK della piattaforma Windows.
Istruzioni
Passo 1
Se necessario, registrare la classe della finestra da creare. Effettuare una chiamata alle funzioni API RegisterClass, RegisterClassEx o utilizzare la funzionalità appropriata del framework utilizzato.
Le funzioni RegisterClass e RegisterClassEx accettano puntatori rispettivamente a strutture di tipo WNDCLASS e WNDCLASSEX come unico parametro. Il valore restituito di tipo ATOM può essere utilizzato al posto del nome della classe durante la creazione di una finestra. Se la chiamata alla funzione fallisce, il valore restituito è 0.
Istanzia una struttura di tipo WNDCLASS o WNDCLASSEX. Compila tutti i campi necessari. In particolare, i valori corretti devono essere inseriti in:
- cbSize - dimensione della struttura in byte;
- style - un insieme di stili per la classe della finestra;
- lpfnWndProc - puntatore a una procedura finestra;
- hInstance è l'handle del modulo in cui è registrata la classe della finestra;
- lpszClassName è il nome simbolico della classe.
Il resto dei campi può essere scritto con valori NULL. Effettua una chiamata di funzione per registrare la classe della finestra. Controlla il risultato restituito.
Passo 2
Se necessario, selezionare una classe di finestre esistente. È necessario conoscere il nome simbolico della classe (quello passato attraverso il puntatore lpszClassName durante la registrazione) o il valore ATOM corrispondente. La classe può essere locale a livello di applicazione, globale a livello di applicazione (registrata con il flag CS_GLOBALCLASS) o classe di sistema. L'ultimo tipo include classi di finestre con i nomi: Button, ComboBox, Edit, ListBox, MDIClient, ScrollBar, Static. Classi come RichEdit20W o SysListView32 vengono registrate quando vengono caricate le librerie corrispondenti.
Passaggio 3
Crea una finestra di Windows. Utilizzare le funzioni API CreateWindow, CreateWindowEx oi metodi wrapper appropriati per gli oggetti classe del framework o della libreria che si sta utilizzando. Il prototipo per la funzione CreateWindowEx ha il seguente aspetto:
HWND CreateWindowEx (DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, intero x, int y, int nWidth, int nAltezza, HWND hWndParent, HMENU hMenù, ISTANZA istanza, LPVOID lpParam);
La funzione CreateWindow differisce da CreateWindowEx solo per l'assenza del parametro dwExStyle.
Chiama CreateWindow o CreateWindowEx. Passare nel parametro lpClassName il nome o il valore ATOM della classe della finestra definita nel primo o nel secondo passaggio. I parametri x, y, nWidth, nHeight possono essere le coordinate e le dimensioni della finestra che si sta creando. L'handle della finestra padre (se presente) viene passato tramite hWndParent.
Salva e analizza il valore restituito da CreateWindow o CreateWindowEx. In caso di successo, restituiranno un handle alla nuova finestra; in caso di errore, NULL.