Kako Napraviti Prozor Poluprozirnim

Sadržaj:

Kako Napraviti Prozor Poluprozirnim
Kako Napraviti Prozor Poluprozirnim

Video: Kako Napraviti Prozor Poluprozirnim

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

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

Kako napraviti prozor poluprozirnim
Kako napraviti prozor poluprozirnim

Potrebno

  • - sastavljač;
  • Windows SDK ili okvir za Windows programiranje -.

Upute

Korak 1

Uzmite kvaku na prozoru koji želite učiniti poluprozirnim. Pronađite ili izradite prozor. Da biste ga stvorili, koristite funkcije CreateWindow, CreateWindowEx API ili metode omota oko tih 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 širina, int nHeight, HWND hWndParent, HMENU hMenu,

HINSTANCE trenutak, LPVOID lpParam);

Kao što vidite, funkcija vraća kretanje stvorenom 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 izvršiti pomoću API poziva API FindWindow, FindWindowEx, EnumWindows, EnumChildWindows, EnumThreadWindows i njihove kombinacije. Možete dobiti ručicu za prozor unutar određenog područja pomoću funkcija WindowFromPoint i ChildWindowFromPoint.

3. korak

Postavite prozor na prošireni stil WS_EX_LAYERED. Upotrijebite SetWindowLong API ili odgovarajuće metode omotača objekata. Funkcija SetWindowLong u potpunosti zamjenjuje promjenjive podatke o parametrima prozora, pa je upotrijebite u kombinaciji s funkcijom GetWindowLong za dohvaćanje prethodne vrijednosti za skup zastavica stila. 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 izvršavanja radnji opisanih u prethodnom koraku.

4. korak

Prozor učinite poluprozirnim. Upotrijebite API SetLayeredWindowAttributes ili metode klasa omotača. Prototip funkcije SetLayeredWindowAttributes izgleda ovako:

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

Korak 5

Parametar hwnd za funkciju mora biti valjana ručka prozora dobivena u prvom koraku. Parametar crKey ključ je boje koji se koristi za definiranje poluprozirnih područja. Parametar bAlpha specificira vrijednost prozirnosti. S vrijednošću 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 utvrdit će se na temelju tipke u boji. Kad je omogućena oznaka LWA_ALPHA, parametar bAlpha koristit će se za određivanje vrijednosti prozirnosti.

Korak 6

Da biste cijeli prozor učinili poluprozirnim, pozovite SetLayeredWindowAttributes sa željenom vrijednosti 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 napola prozirnim, upotrijebite poziv:

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

Preporučeni: