Me përmirësimin e teknologjive të shfaqjes grafike, API i sistemeve operative gjithashtu u përmirësua, duke u dhënë programeve gjithnjë e më shumë mundësi për zhvillimin e elementeve jo standarde të ndërfaqes. Pra, një nga risitë e sistemit operativ Windows 2000 ishin dritaret me shtresa, pjesët e të cilave mund të ishin të tejdukshme. Së shpejti, një përshkrim i API për të punuar me dritare të shtresuara u bë i disponueshëm në MSDN. Sidoqoftë, në forumet e programuesve, pyetjet rreth mënyrës se si të bëhet një dritare gjysmë transparente janë ende duke u bërë.
E nevojshme
- - përpiluesi;
- - Windows SDK ose korniza për programimin e Windows.
Udhëzimet
Hapi 1
Merrni një dorezë në dritaren që dëshironi ta bëni gjysmë transparente. Gjeni ose krijoni një dritare. Për ta krijuar atë, përdorni ose funksionet CreateWindow, CreateWindowEx API, ose metodat mbështjellëse rreth këtyre funksioneve që i përkasin klasave të kornizës së përdorur. Prototipi për funksionin CreateWindow duket kështu:
HWND KrijoWindow (Emri LPCTSTR lpClass, Emri LPCTSTR lpWindow, DWORD stiStyle, int x, int y, gjerësia int
int lartësia,
HWND hWndParent, HMENU hMenu, HINSTANCE hIstance, LPVOID lpParam);
Siç mund ta shihni, funksioni kthen një dorezë në dritaren e krijuar si rezultat i ekzekutimit. Nëse përdoret ndonjë klasë mbështjellëse, përdorni metodat e saj në objektin që korrespondon me dritaren e krijuar për të marrë dorezën.
Hapi 2
Gjetja e një dritare mund të bëhet duke përdorur thirrjet API FindWindow, FindWindowEx, EnumWindows, EnumChildWindows, EnumThreadWindows dhe kombinimet e tyre. Ju mund të merrni një dorezë në një dritare brenda një zone të veçantë duke përdorur funksionet WindowFromPoint dhe ChildWindowFromPoint.
Hapi 3
Vendosni dritaren në stilin e zgjeruar WS_EX_LAYERED. Përdorni SetWindowLong API ose metodat përkatëse të objekteve mbështjellëse. Funksioni SetWindowLong zëvendëson plotësisht informacionin e ndryshueshëm të parametrit të dritares, prandaj përdorni atë në kombinim me funksionin GetWindowLong për të marrë vlerën e mëparshme për grupin e flamujve të stilit. Për shembull, stili mund të ndryshohet kështu:
:: SetWindowLong (hWnd, GWL_EXSTYLE,:: GetWindowLong (hWnd, GWL_EXSTYLE));
Këtu hWnd është doreza e dritares e gjetur si rezultat i kryerjes së veprimeve të përshkruara në hapin e mëparshëm.
Hapi 4
Bëni dritaren gjysmë transparente. Përdorni SetLayeredWindowAttributes API ose metodat e klasave mbështjellëse. Prototipi i funksionit SetLayeredWindowAttributes duket kështu:
Set BOOLShtresa e shtresuar e dritares (HWND hwnd, COLORREF crKey, Byte bAlfa, DWORD dwFlags);
Hapi 5
Parametri hwnd i funksionit duhet të jetë një vegël e vlefshme e dritares e marrë në hapin e parë. Parametri crKey është një çelës me ngjyra që përdoret për të përcaktuar zona gjysmë transparente. Parametri bAlpha specifikon vlerën e transparencës. Me vlerën e parametrit bAlpha të barabartë me 0, zonat "gjysmë transparente" do të jenë plotësisht transparente. Nëse parametri bAlpha është 255, ata do të jenë plotësisht të errët. Parametri dwFlags përcakton mënyrën e shfaqjes së mëtejshme të përmbajtjes së dritares. Kur flamuri LWA_COLORKEY përfshihet në vlerën dwFlags, zonat gjysmë transparente të dritares do të përcaktohen bazuar në tastin e ngjyrave. Kur aktivizohet flamuri LWA_ALPHA, do të përdoret parametri bAlpha për të përcaktuar vlerën e tejdukshmërisë.
Hapi 6
Për ta bërë të gjithë dritaren gjysmë transparente, thirrni SetLayeredWindowAttributes me vlerën e preferuar të parametrit bAlpha, flamurin LWA_ALPHA, por jo flamurin LWA_COLORKEY. Përdorni dorezën e dritares së gjetur si parametrin e parë të funksionit. Për shembull, për ta bërë një dritare gjysmë transparente, përdorni thirrjen:
:: SetLayeredWindowAttributes (hWnd, RGB (0, 0, 0), 128, LWA_ALPHA);