Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Che cos'è una finestra?
Ovviamente, le finestre sono centrali per Windows. Sono così importanti che hanno chiamato il sistema operativo dopo di loro. Ma cos'è una finestra? Quando si pensa a una finestra, è probabile che si pensi a qualcosa di simile al seguente:
Questo tipo di finestra viene chiamato finestra dell'applicazione o finestra principale. In genere ha una cornice con una barra del titolo, i pulsanti Riduci e Ingrandisci, e altri elementi standard dell'interfaccia utente. Il frame viene chiamato 'area non client della finestra, chiamata così perché il sistema operativo gestisce quella parte della finestra. L'area client è quella all'interno del frame. Questa è la parte della finestra gestita dal programma.
Ecco un altro tipo di finestra:
Se sei nuovo nella programmazione su Windows, potrebbe sorprenderti sapere che i controlli dell'interfaccia utente, come pulsanti e caselle di modifica, sono finestre. La differenza principale tra un controllo dell'interfaccia utente e una finestra dell'applicazione è che un controllo non esiste da solo. Il controllo viene invece posizionato rispetto alla finestra dell'applicazione. Quando si trascina la finestra dell'applicazione, il controllo si sposta con esso, come previsto. Inoltre, il controllo e la finestra dell'applicazione possono comunicare tra loro. Ad esempio, la finestra dell'applicazione riceve notifiche di clic da un pulsante.
Pertanto, quando si pensa che finestra, non pensare semplicemente finestra dell'applicazione. Si consideri invece una finestra come un costrutto di programmazione che:
- Occupa una determinata parte dello schermo.
- Può o non essere visibile in un determinato momento.
- Sa come disegnare se stesso.
- Risponde agli eventi dell'utente o del sistema operativo.
Finestre principali e Finestre di proprietà
Nel caso di un controllo dell'interfaccia utente, si dice che la finestra di controllo sia la figlia della finestra dell'applicazione. La finestra dell'applicazione è la padre della finestra di controllo. La finestra padre fornisce il sistema di coordinate utilizzato per posizionare una finestra figlia. La presenza di una finestra padre influisce sugli aspetti visivi di una finestra; ad esempio, una finestra figlio viene ritagliata in modo che nessuna parte della finestra figlio possa apparire al di fuori dei bordi della finestra padre.
Un'altra relazione è la relazione tra una finestra dell'applicazione e una finestra di dialogo modale. Quando un'applicazione visualizza una finestra di dialogo modale, la finestra dell'applicazione è la finestra proprietaria e la finestra di dialogo è una finestra di proprietà. Una finestra posseduta viene sempre posizionata davanti alla finestra del proprietario. Viene nascosto quando il proprietario viene ridotto a icona e viene distrutto contemporaneamente al proprietario.
L'immagine seguente mostra un'applicazione che visualizza una finestra di dialogo con due pulsanti:
La finestra dell'applicazione è proprietaria della finestra di dialogo e la finestra di dialogo è l'elemento padre di entrambe le finestre dei pulsanti. Il diagramma seguente illustra queste relazioni:
Maniglie delle finestre
Windows sono oggetti, che dispongono sia di codice che di dati, ma non di classi C++. Un programma fa invece riferimento a una finestra usando un valore denominato handle . Un handle è un tipo opaco. Essenzialmente, è solo un numero usato dal sistema operativo per identificare un oggetto. È possibile immaginare Windows come una grande tabella con tutte le finestre che sono state create. Usa questa tabella per cercare le finestre in base ai relativi handle. Se questo sia esattamente come funziona internamente non ha importanza. Il tipo di dati per gli handle di finestra è HWND, che viene in genere pronunciato "aitch-wind". Gli handle di finestra vengono restituiti dalle funzioni che creano finestre: CreateWindow e CreateWindowEx.
Per eseguire un'operazione in una finestra, in genere si chiama una funzione che accetta un valore HWND come parametro. Ad esempio, per riposizionare una finestra sullo schermo, chiamare la funzione MoveWindow:
BOOL MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint);
Il primo parametro è l'handle della finestra che si desidera spostare. Gli altri parametri specificano la nuova posizione della finestra e se la finestra deve essere ridisegnata.
Tenere presente che gli handle non sono puntatori. Se hwnd è una variabile che contiene un handle, il tentativo di dereferenziare l'handle scrivendo *hwnd
è un errore.
Coordinate dello schermo e della finestra
Le coordinate vengono misurate in pixel indipendenti dal dispositivo. Per quanto riguarda la dispositivo indipendente parte di pixel indipendenti dal dispositivo quando esaminiamo gli elementi grafici.
A seconda dell'attività, è possibile misurare le coordinate relative allo schermo, rispetto a una finestra (incluso il frame) o rispetto all'area client di una finestra. Ad esempio, si posiziona una finestra sullo schermo usando le coordinate dello schermo, ma si disegna all'interno di una finestra usando le coordinate client. In ogni caso, l'origine (0, 0) è sempre l'angolo superiore sinistro dell'area.
Prossimo
WinMain: punto di ingresso dell'applicazione