Categories: ProgrammazioneWindows

Finestre di Windows Rotonde

Con l’SDK ( Software Development Kit ) di Windows è possibile creare delle finestre con dei buchi di varie forme, potrebbe essere ad esempio utile per avere uno spiraglio sulle finestre sottostanti o forse solo per curiosità. La funzione che ci permette tutto questo è SetWindowRgn che permette di associare ad una finestra, non soltanto al DC ( Device Context ), un’area di clipping.

int SetWindowRgn(HWND hWnd, HRGN hrgn, BOOL fRedraw)

Il primo argomento è l’handle della finestra da trattare ( bucare ), il secondo è la region da tagliare ed il terzo definisce se ridisegnare la finestra oppure no. Il valore di ritorno è 0 se va tutto bene o un valore positivo se va male.
Definiamo quindi una funzione per la regione di clip ( ad esempio SetClipWindow ) che crea una regione rettangolare che sia la finestra principale CreateRectRgnIndirect(&rcWindow), poi si crea un’altra regione della forma voluta con ad esempio CreateEllipticRgnIndirect che sarà il buco ed infine si sottraggono i due con CombineRgn(hrgTarget, hrgFinestra, hrgBuco, RGN_DIFF) e poi alla fine della nostra funzione mettiamo la funzione che abbiamo spiegato prima: SetWindowRgn(hwndFinestra, hrgTarget, TRUE).
Ora basta inserire la nostra funzione ( ad esempio SetClipWindow ) ovviamente nell’evento WM_PAINT ed anche prima di mostrare la finestra principale quando parte il programma.
Da questo articolo potete prendere vari spunti, tra cui quella di togliere a tutta o parte di una finestra ad esempio i tratti intorno e farla diventare un cerchio, insomma non c’è a questo punto limite alla fantasia.
Conoscere tutte la parti anche le più remote dell’SDK di Windows e questa funzione pensate che è stata inserita da Windows 95, è molto importante, ma data la sua vastità, non è semplice e quindi grazie ad articoli come questo è possibile capire cosa si può realmente fare con la programmazione e l’SDK ( Software Development Kit ).

Share
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Recent Posts

MerciGest: il gestionale di magazzino semplice e gratuito

MerciGest è il software gestionale gratuito per Windows che semplifica la gestione del magazzino: giacenze,…

3 giorni ago

Software gestionali con SQL Server: un archivio unico, accessibile ovunque

Tutti i nostri software gestionali possono essere collegati a un database SQL Server, consentendo l’accesso…

5 giorni ago

Come iniziare ad usare MerciGest in 5 minuti

MerciGest è semplice e immediato: basta scaricare e installare il programma per iniziare subito. Al…

7 giorni ago

Cos’è MerciGest e a chi serve

MerciGest è un gestionale di magazzino per Windows pensato per negozi, piccole imprese e artigiani…

1 settimana ago

Introduzione alla Standard Template Library (STL)

La Standard Template Library (STL) è una delle componenti più potenti del C++. Fornisce una…

7 mesi ago

Un Abbonamento per Tutti i Software

Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…

2 anni ago