Kako Napraviti Prozor Poluprovidnim

Sadržaj:

Kako Napraviti Prozor Poluprovidnim
Kako Napraviti Prozor Poluprovidnim

Video: Kako Napraviti Prozor Poluprovidnim

Video: Kako Napraviti Prozor Poluprovidnim
Video: Prelazim u Stolare 🤪 *kako napraviti prozor* 2024, Maj
Anonim

Poboljšanjem tehnologija grafičkog prikaza, API operativnih sistema se takođe poboljšao, pružajući programerima sve više i više mogućnosti za razvoj nestandardnih elemenata interfejsa. Dakle, jedna od inovacija operativnog sistema Windows 2000 bili su slojeviti prozori čiji dijelovi mogu biti prozirni. Uskoro je na API-ju MSDN postao dostupan opis API-ja za rad sa slojevitim prozorima. Međutim, na forumima programera i dalje se postavljaju pitanja kako napraviti prozor poluprozirnim.

Kako napraviti prozor poluprovidnim
Kako napraviti prozor poluprovidnim

Potrebno

  • - kompajler;
  • - windows sdk ili framework za programiranje windows-a.

Instrukcije

Korak 1

Uhvatite kvaku na prozoru koji želite učiniti poluprozirnim. Pronađite ili napravite prozor. Da biste ga kreirali, koristite ili CreateWindow, CreateWindowEx API funkcije ili metode omota oko ovih funkcija koje pripadaju klasama korištenog okvira. Prototip funkcije CreateWindow izgleda ovako:

HWND CreateWindow (LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu,

HINSTANCE hInstance, LPVOID lpParam);

Kao što vidite, funkcija vraća ručicu kreiranom prozoru kao rezultat izvršenja. Ako se koristi bilo koja klasa omotača, upotrijebite njene metode na objektu koji odgovara kreiranom prozoru da biste dobili ručicu.

Korak 2

Pronalaženje prozora može se obaviti pomoću API poziva FindWindow, FindWindowEx, EnumWindows, EnumChildWindows, EnumThreadWindows i njihove kombinacije. Možete dobiti kvaku za prozor unutar određenog područja pomoću funkcija WindowFromPoint i ChildWindowFromPoint.

Korak 3

Postavite prozor na prošireni stil WS_EX_LAYERED. Koristite API SetWindowLong ili odgovarajuće metode objekata omotača. Funkcija SetWindowLong u potpunosti zamjenjuje podatke o parametrima prozora koji se mogu mijenjati, pa je koristite u kombinaciji s funkcijom GetWindowLong za dohvaćanje prethodne vrijednosti za skup zastavica stilova. Na primjer, stil se može promijeniti ovako:

:: SetWindowLong (hWnd, GWL_EXSTYLE,:: GetWindowLong (hWnd, GWL_EXSTYLE));

Ovdje je hWnd kvaka prozora pronađena kao rezultat izvođenja radnji opisanih u prethodnom koraku.

Korak 4

Učinite prozor poluprozirnim. Koristite API SetLayeredWindowAttributes ili metode klasa omotača. Prototip funkcije SetLayeredWindowAttributes izgleda ovako:

BOOL SetLayeredWindowAttributes (HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);

Korak 5

Parametar hwnd za funkciju mora biti važeća ručka prozora dobivena u prvom koraku. Parametar crKey je ključ u boji koji se koristi za definiranje poluprozirnih područja. Parametar bAlpha specificira vrijednost prozirnosti. S vrijednosti parametra bAlpha jednakom 0, "poluprozirna" područja bit će potpuno prozirna. Ako je parametar bAlpha 255, oni će biti potpuno neprozirni. Parametar dwFlags određuje način daljnjeg prikaza sadržaja prozora. Kada je zastavica LWA_COLORKEY uključena u vrijednost dwFlags, poluprozirna područja prozora bit će određena na temelju ključa u boji. Kada je omogućena oznaka LWA_ALPHA, parametar bAlpha će se koristiti za određivanje vrijednosti prozirnosti.

Korak 6

Da biste cijeli prozor učinili poluprozirnim, pozovite SetLayeredWindowAttributes sa željenom vrijednošću parametra bAlpha, zastavicom LWA_ALPHA, ali bez zastavice LWA_COLORKEY. Koristite pronađenu kvaku prozora kao prvi parametar funkcije. Na primjer, da biste prozor učinili poluprozirnim, upotrijebite poziv:

:: SetLayeredWindowAttributes (hWnd, RGB (0, 0, 0), 128, LWA_ALPHA);

Preporučuje se: