Uzlabojoties grafisko displeju tehnoloģijām, uzlabojās arī operētājsistēmu API, nodrošinot programmētājiem arvien vairāk iespēju izstrādāt nestandarta saskarnes elementus. Tātad viens no Windows 2000 operētājsistēmas jauninājumiem bija slāņaini logi, kuru daļas varēja būt caurspīdīgas. Drīz MSDN kļuva pieejams API apraksts darbam ar slāņveida logiem. Tomēr programmētāju forumos joprojām tiek uzdoti jautājumi par to, kā padarīt logu daļēji caurspīdīgu.
Nepieciešams
- - sastādītājs;
- - Windows sdk vai sistēma Windows programmēšanai.
Instrukcijas
1. solis
Saņemiet rokturi logam, kuru vēlaties padarīt daļēji caurspīdīgu. Atrodiet vai izveidojiet logu. Lai to izveidotu, izmantojiet vai nu CreateWindow, CreateWindowEx API funkcijas, vai iesaiņošanas metodes ap šīm funkcijām, kas pieder izmantotā ietvara klasēm. Funkcijas CreateWindow prototips izskatās šādi:
HWND CreateWindow (LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent,
HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);
Kā redzat, izpildes rezultātā funkcija izveidotajā logā atgriež rokturi. Ja tiek izmantota kāda iesaiņošanas klase, izmantojiet tās metodes objektam, kas atbilst izveidotajam logam, lai iegūtu rokturi.
2. solis
Loga atrašanu var veikt, izmantojot API izsaukumus FindWindow, FindWindowEx, EnumWindows, EnumChildWindows, EnumThreadWindows un to kombinācijas. Jūs varat iegūt rokturi logam noteiktā apgabalā, izmantojot funkcijas WindowFromPoint un ChildWindowFromPoint.
3. solis
Iestatiet logā paplašināto stilu WS_EX_LAYERED. Izmantojiet SetWindowLong API vai atbilstošās iesaiņojuma objektu metodes. Funkcija SetWindowLong pilnībā aizstāj modificējamo loga parametru informāciju, tāpēc izmantojiet to kopā ar funkciju GetWindowLong, lai izgūtu stila karodziņu kopas iepriekšējo vērtību. Piemēram, stilu var mainīt šādi:
:: SetWindowLong (hWnd, GWL_EXSTYLE,:: GetWindowLong (hWnd, GWL_EXSTYLE));
Šeit hWnd ir loga rokturis, kas atrasts iepriekšējā solī aprakstīto darbību izpildes rezultātā.
4. solis
Padariet logu daļēji caurspīdīgu. Izmantojiet SetLayeredWindowAttributes API vai iesaiņošanas klases metodes. Funkcijas SetLayeredWindowAttributes prototips izskatās šādi:
BOOL SetLayeredWindowAttributes (HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
5. solis
Funkcijas hwnd parametram jābūt derīgam loga rokturim, kas iegūts pirmajā solī. Parametrs crKey ir krāsu atslēga, ko izmanto, lai definētu daļēji caurspīdīgas zonas. Parametrs bAlpha norāda caurspīdīguma vērtību. Ja parametra bAlpha vērtība ir vienāda ar 0, "daļēji caurspīdīgie" laukumi būs pilnīgi caurspīdīgi. Ja bAlpha parametrs ir 255, tie būs pilnīgi necaurspīdīgi. Parametrs dwFlags nosaka loga satura turpmākas parādīšanas režīmu. Kad dwFlags vērtībā ir iekļauts karogs LWA_COLORKEY, loga daļēji caurspīdīgie laukumi tiks noteikti, pamatojoties uz krāsu taustiņu. Kad ir iespējots karodziņš LWA_ALPHA, caurspīdības vērtības noteikšanai tiks izmantots parametrs bAlpha.
6. solis
Lai viss logs būtu daļēji caurspīdīgs, izsauciet SetLayeredWindowAttributes ar vēlamo parametra bAlpha vērtību, karodziņu LWA_ALPHA, bet bez karodziņa LWA_COLORKEY. Izmantojiet atrasto loga rokturi kā pirmo funkcijas parametru. Piemēram, lai padarītu logu pusi caurspīdīgu, izmantojiet zvanu:
:: SetLayeredWindowAttributes (hWnd, RGB (0, 0, 0), 128, LWA_ALPHA);