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 ).
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→