Hur Man Gör Ett Fönster Halvtransparent

Innehållsförteckning:

Hur Man Gör Ett Fönster Halvtransparent
Hur Man Gör Ett Fönster Halvtransparent

Video: Hur Man Gör Ett Fönster Halvtransparent

Video: Hur Man Gör Ett Fönster Halvtransparent
Video: Montera fönster 2024, November
Anonim

Med förbättringen av grafisk displayteknik förbättrades också operativsystemens API, vilket ger programmerare fler och fler möjligheter att utveckla icke-standardiserade gränssnittselement. Så en av innovationerna i Windows 2000-operativsystemet var skiktade fönster, av vilka delar kunde vara genomskinliga. Snart blev en beskrivning av API för att arbeta med lagerfönster tillgänglig på MSDN. På programmerarforum ställs dock fortfarande frågor om hur man gör ett fönster halvtransparent.

Hur man gör ett fönster halvtransparent
Hur man gör ett fönster halvtransparent

Nödvändig

  • - kompilator;
  • - Windows SDK eller ram för Windows-programmering.

Instruktioner

Steg 1

Ta hand om fönstret du vill göra halvtransparent. Hitta eller skapa ett fönster. För att skapa den använder du antingen CreateWindow, CreateWindowEx API-funktioner eller omslagsmetoderna runt dessa funktioner som tillhör klasserna i det använda ramverket. Prototypen för CreateWindow-funktionen ser ut så här:

HWND CreateWindow (LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHöjd, HWND hWndParent,

HMENU hMeny, HINSTANCE hInstance, LPVOID lpParam);

Som du kan se returnerar funktionen ett handtag till det skapade fönstret som ett resultat av körningen. Om någon omslagsklass används, använd metoderna på det objekt som motsvarar det skapade fönstret för att få handtaget.

Steg 2

Att hitta ett fönster kan göras med hjälp av API-samtal FindWindow, FindWindowEx, EnumWindows, EnumChildWindows, EnumThreadWindows och deras kombinationer. Du kan hantera ett fönster inom ett visst område med funktionerna WindowFromPoint och ChildWindowFromPoint.

Steg 3

Ställ in fönstret till den utökade stilen WS_EX_LAYERED. Använd SetWindowLong API eller motsvarande metoder för omslagningsobjekt. SetWindowLong-funktionen ersätter helt den modifierbara fönsterparameterinformationen, så använd den i kombination med GetWindowLong-funktionen för att hämta det tidigare värdet för uppsättningen stilflaggor. Till exempel kan stilen ändras så här:

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

Här är hWnd fönsterhandtaget som hittades som ett resultat av att utföra de åtgärder som beskrivs i föregående steg.

Steg 4

Gör fönstret halvtransparent. Använd API: et SetLayeredWindowAttributes eller metoder för omslagsklasserna. SetLayeredWindowAttributes-funktionsprototypen ser ut så här:

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

Steg 5

Parametern hwnd till funktionen måste vara ett giltigt fönsterhandtag som erhölls i första steget. Parametern crKey är en färgnyckel som används för att definiera halvtransparenta områden. Parametern bAlpha anger genomskinlighetsvärdet. Med bAlpha-parametervärdet lika med 0 kommer de "halvgenomskinliga" områdena att vara helt transparenta. Om bAlpha-parametern är 255 är de helt ogenomskinliga. Parametern dwFlags bestämmer läget för ytterligare visning av fönsterinnehållet. När LWA_COLORKEY-flaggan ingår i dwFlags-värdet bestäms de halvtransparenta områdena i fönstret baserat på färgtangenten. När LWA_ALPHA-flaggan är aktiverad kommer bAlpha-parametern att användas för att bestämma genomskinlighetsvärdet.

Steg 6

För att göra hela fönstret halvtransparent, ring SetLayeredWindowAttribut med önskat bAlpha-parametervärde, LWA_ALPHA-flaggan, men ingen LWA_COLORKEY-flagga. Använd det hittade fönsterhandtaget som den första parametern för funktionen. För att till exempel göra ett fönster halvt transparent, använd samtalet:

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

Rekommenderad: