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.

Published by
Giampaolo Rossi

Recent Posts

Un Abbonamento per Tutti i Software

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

1 anno ago

Software di Magazzino Gratuito

MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→

1 anno ago

Mettere il PC in Lock Screen

In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…

3 anni ago

Fare il reset togliendo la corrente

In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…

3 anni ago

Prossimi Aggiornamenti Software

Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…

3 anni ago

Come Eliminare i Files in Windows

Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→

4 anni ago