Per chi conosce la programmazione in ambiente Windows di certo non avrà bisogno di leggere questo articolo, ma per chi si sta avvicinando a questo argomento oppure utilizza questo sistema operativo, sarà utile sapere le fasi di inizializzazione ed esecuzione di una tipica applicazione.
Un programma Windows inizia con la funzione WinMain() che riceve quattro parametri:
La fase di inizializzazione di un programma Windows comincia con WinMain() e termina con l’ingresso nel message-loop. Indipendentemente dal linguaggio di programmazione utilizzato le appplicazioni Windows hanno un ciclo dei messaggi, ogni azione che si farà sul programma, prima o poi, originerà un messaggio con un destinatario ed un contenuto. Il messaggio viene inviato attraverso la funzione SendMessage() o PostMessage(), unica differenza tra le due è che con la prima occorre attendere la risposta da parte del destinatario ( comunicazione sincrona ), mentre con la seconda no ( comunicazione asincrona ). Ogni messaggio ha delle informazioni al suo interno: l’handle della finestra bersaglio ( che deve gestire il messaggio ), il tipo di messaggio ( ad esempio WM_COMMAND o WM_SETSEL ), un valore WPARAM ed uno LPARAM che fungono da parametri del messaggio, ad esempio: SendMessage(hMyEdit, WM_SETSEL, -1, 0) consente di selezionare tutto il testo contenuto all’interno di un controllo EditBox. Windows inserisce il messaggio, la window-procedure lo raccoglie e legge le istruzioni contenute all’interno, questo meccanismo di callback è alla base del funzionamento dell’intero sistema operativo.
Durante la fase di avvio un programma deve portare a termine due operazioni principali: la registrazione della classe della finestra principale del programma e la sua creazione. Durante quest’ultimo passaggio si devono creare la barra degli strumenti, la barra di stato, il menu e caricare i valori memorizzati, come la posizione o le dimensioni, nel registro di sistema, che è il contenitore delle informazioni delle finestre.
A meno di non prendere dei provvedimenti, ogni volta che un utente fa clic o doppio clic, a seconda delle sue impostazioni, sull’icona del programma, quest’ultimo reagisce caricandosi in memoria ed andare in esecuzione. Tutto questo significa che i dati gestiti dal programma dovranno esserlo anche da più applicazioni contemporaneamente, se così non fosse occorre prendere dei seri provvedimenti e consentire una sola istanza dell’applicazione ( single-instance ). Il modo per farlo è semplice, basta analizzare la RAM e vedere se esiste qualche applicazione con la stessa classe registrata, a qual punto si invia un PostQuitMessage().
Lo scopo di questo articolo non è quello di insegnare la programmazione delle finestre in Windows, ma avere dei contenuti utili agli utenti a cavallo tra chi utilizza il sistema operativo ed il programmatore agli inizi dei suoi studi. Spero che i contenuti di questo articolo siano serviti a molti per capire da vicino come funziona un sistema operativo come Windows.
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→