Che cos'è una finestra?
Che cos'è una finestra?
Ovviamente, le finestre sono centrali per Windows. Sono così importanti che hanno denominato il sistema operativo dopo di loro. Ma che cos'è una finestra? Quando si pensa a una finestra, probabilmente si pensa 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, Icona e Ottimizza pulsanti e altri elementi dell'interfaccia utente standard. Il frame viene chiamato area non client della finestra, così chiamata perché il sistema operativo gestisce tale parte della finestra. L'area all'interno del frame è l'area client. Questa è la parte della finestra gestita dal programma.
Ecco un altro tipo di finestra:
Se non si è nuovi alla programmazione di Windows, potrebbe sorprendere che i controlli dell'interfaccia utente, ad esempio i pulsanti e le caselle di modifica, sono finestre stesse. La differenza principale tra un controllo 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 clic da un pulsante.
Pertanto, quando si pensa alla finestra, non si pensa semplicemente alla finestra dell'applicazione. Invece, pensa a una finestra come costrutto di programmazione che:
- Occupa una determinata parte dello schermo.
- Può o non essere visibile in un determinato momento.
- Sa come disegnare.
- Risponde agli eventi dall'utente o dal sistema operativo.
Windows padre e Windows proprietario
Nel caso di un controllo interfaccia utente, la finestra di controllo viene detta figlio della finestra dell'applicazione. La finestra dell'applicazione è l'elemento padre della finestra di controllo. La finestra padre fornisce il sistema di coordinate usato per posizionare una finestra figlio. La presenza di una finestra padre influisce sugli aspetti dell'aspetto di una finestra; ad esempio, una finestra figlio viene ritagliata in modo che nessuna parte della finestra figlio possa essere visualizzata all'esterno 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 proprietario e la finestra di dialogo è una finestra di proprietà . Una finestra di proprietà viene sempre visualizzata davanti alla finestra del proprietario. È nascosto quando il proprietario viene ridotto al minimo e viene distrutto allo stesso tempo del proprietario.
L'immagine seguente mostra un'applicazione che visualizza una finestra di dialogo con due pulsanti:
La finestra dell'applicazione possiede la finestra di dialogo e la finestra di dialogo è l'elemento padre di entrambe le finestre del pulsante. Il diagramma seguente illustra queste relazioni:
Handle delle finestre
Windows sono oggetti, che hanno sia codice che dati, ma non sono classi C++. Invece, un programma fa riferimento a una finestra usando un valore denominato handle. Un handle è un tipo opaco. Essenzialmente, è solo un numero che il sistema operativo usa per identificare un oggetto. È possibile visualizzare Windows come una grande tabella di tutte le finestre create. Usa questa tabella per cercare finestre con i relativi handle. Se è esattamente come funziona internamente non è importante. Il tipo di dati per gli handle delle finestre è HWND, che in genere è pronunciato "aitch-wind". Gli handle delle finestre vengono restituiti dalle funzioni che creano finestre: CreateWindow e CreateWindowEx.
Per eseguire un'operazione in una finestra, in genere si chiamerà 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 vuole 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 dereferenza dell'handle tramite scrittura *hwnd
è un errore.
Coordinate della schermata e della finestra
Le coordinate vengono misurate in pixel indipendenti dal dispositivo. Per quanto riguarda il dispositivo indipendentemente dai pixel indipendenti dal dispositivo , verranno illustrati gli elementi grafici.
A seconda dell'attività, è possibile misurare le coordinate relative allo schermo, rispetto a una finestra (inclusa la cornice) 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.
Prossima
WinMain: punto di ingresso dell'applicazione