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