Hogyan Készítsünk Félig átlátszó Ablakot

Tartalomjegyzék:

Hogyan Készítsünk Félig átlátszó Ablakot
Hogyan Készítsünk Félig átlátszó Ablakot

Videó: Hogyan Készítsünk Félig átlátszó Ablakot

Videó: Hogyan Készítsünk Félig átlátszó Ablakot
Videó: Atrium Batta nyílászáró beépítés 2024, November
Anonim

A grafikus megjelenítési technológiák fejlesztésével az operációs rendszerek API-ja is javult, egyre több lehetőséget biztosítva a programozók számára a nem szabványos interfész elemek fejlesztésére. Tehát a Windows 2000 operációs rendszer egyik újítása a réteges ablakok voltak, amelyek részei áttetszőek lehetnek. Hamarosan elérhetővé vált az API leírása a réteges ablakokkal való munkavégzéshez az MSDN-en. A programozók fórumain azonban még mindig felteszik a kérdéseket arról, hogyan lehet félig átlátszóvá tenni az ablakot.

Hogyan lehet egy ablakot félig átlátszóvá tenni
Hogyan lehet egy ablakot félig átlátszóvá tenni

Szükséges

  • - fordító;
  • - Windows sdk vagy keretrendszer a Windows programozásához.

Utasítás

1. lépés

Szerezzen fogót az ablakhoz, amelyet félig átlátszóvá akar tenni. Keressen vagy hozzon létre egy ablakot. Létrehozásához használja a CreateWindow, a CreateWindowEx API függvényeket, vagy a használt keretrendszer osztályaiba tartozó ezen funkciók körüli burkoló módszereket. A CreateWindow függvény prototípusa így néz ki:

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

HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);

Mint látható, a függvény a végrehajtás eredményeként visszahozza a fogantyút a létrehozott ablakba. Ha bármilyen burkoló osztályt használ, használja a metódusait a létrehozott ablaknak megfelelő objektumon a fogantyú megszerzéséhez.

2. lépés

Ablak megkeresése API-hívásokkal végezhető el a FindWindow, a FindWindowEx, az EnumWindows, az EnumChildWindows, az EnumThreadWindows és ezek kombinációi segítségével. A WindowFromPoint és a ChildWindowFromPoint függvények segítségével fogást kaphat egy adott területen lévő ablakhoz.

3. lépés

Állítsa be az ablakot a kibővített stílusra WS_EX_LAYERED. Használja a SetWindowLong API-t vagy a burkolóobjektumok megfelelő módszereit. A SetWindowLong függvény teljesen lecseréli a módosítható ablakparaméter-információkat, ezért használja a GetWindowLong függvénnyel együtt a stílusjelzők halmazának előző értékének lekéréséhez. Például a stílus a következőképpen módosítható:

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

Itt a hWnd az az ablakkezelő, amelyet az előző lépésben leírt műveletek végrehajtása során találtunk.

4. lépés

Tegye félig átlátszóvá az ablakot. Használja a SetLayeredWindowAttributes API-t vagy a burkolóosztályok módszereit. A SetLayeredWindowAttributes függvény prototípusa így néz ki:

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

5. lépés

A függvény hwnd paraméterének az első lépésben kapott érvényes ablakkezelőnek kell lennie. A crKey paraméter egy színkulcs, amelyet félig átlátszó területek meghatározására használnak. A bAlpha paraméter adja meg az áttetszőség értékét. Ha a bAlpha paraméter értéke 0, a "félig átlátszó" területek teljesen átlátszók lesznek. Ha a bAlpha paraméter 255, akkor azok teljesen átlátszatlanok lesznek. A dwFlags paraméter meghatározza az ablak tartalmának további megjelenítésének módját. Ha az LWA_COLORKEY zászlót beillesztjük a dwFlags értékbe, akkor az ablak félig átlátszó területeit a színkulcs alapján határozzuk meg. Ha az LWA_ALPHA jelző engedélyezve van, a bAlpha paramétert használja az áttetszőség értékének meghatározására.

6. lépés

A teljes ablak félig átlátszóvá tételéhez hívja meg a SetLayeredWindowAttributes elemet az előnyben részesített bAlpha paraméterértékkel, az LWA_ALPHA zászlóval, de nem LWA_COLORKEY zászlóval. Használja a megtalált ablakfogantyút a funkció első paramétereként. Például egy ablak félig átlátszóvá tételéhez használja a hívást:

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

Ajánlott: