გრაფიკული გამოსახულების ტექნოლოგიების გაუმჯობესებასთან ერთად, ოპერაციული სისტემების API ასევე გაუმჯობესდა, რაც პროგრამისტებს უფრო და უფრო მეტ შესაძლებლობას აძლევს არასტანდარტული ინტერფეისის ელემენტების შემუშავებაში. ასე რომ, Windows 2000 ოპერაციული სისტემის ერთ-ერთი ინოვაცია იყო ფენიანი ფანჯრები, რომელთა ნაწილები შეიძლება იყოს გამჭვირვალე. მალე MSDN– ზე ხელმისაწვდომი გახდა API– ს აღწერა ფენოვან ფანჯრებთან მუშაობისთვის. ამასთან, პროგრამისტების ფორუმებზე კვლავ იკითხება კითხვები, თუ როგორ უნდა გააკეთოთ ფანჯარა ნახევრად გამჭვირვალე.
აუცილებელია
- - შემდგენელი;
- - windows sdk ან windows პროგრამირების ჩარჩო.
ინსტრუქციები
Ნაბიჯი 1
მიიღეთ სახელური ფანჯარაში, რომლის გაკეთებაც გსურთ ნახევრად გამჭვირვალე. იპოვნეთ ან შექმენით ფანჯარა. მისი შესაქმნელად გამოიყენეთ ან CreateWindow, CreateWindowEx API ფუნქციები, ან ამ ფუნქციების შესაფუთი მეთოდები, რომლებიც მიეკუთვნება გამოყენებული ჩარჩოს კლასებს. CreateWindow ფუნქციის პროტოტიპი ასე გამოიყურება:
HWND CreateWindow (LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int სიგანე, int სიმაღლე, HWND hWndParent,
HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);
როგორც ხედავთ, ფუნქცია შესრულების შედეგად უბრუნებს სახელურს შექმნილ ფანჯარაში. თუ გამოიყენება რაიმე შესაფუთი კლასი, გამოიყენეთ მისი მეთოდები შექმნილ ფანჯარასთან შესაბამის ობიექტზე სახელურის მისაღებად.
ნაბიჯი 2
ფანჯრის მოძებნა შეიძლება გაკეთდეს API ზარების FindWindow, FindWindowEx, EnumWindows, EnumChildWindows, EnumThreadWindows და მათი კომბინაციების გამოყენებით. შეგიძლიათ გაუმკლავდეთ ფანჯარაში გარკვეულ არეალში WindowFromPoint და ChildWindowFromPoint ფუნქციების გამოყენებით.
ნაბიჯი 3
დააყენეთ ფანჯარა გაფართოებულ სტილზე WS_EX_LAYERED. გამოიყენეთ SetWindowLong API ან შესაფუთი ობიექტების შესაბამისი მეთოდები. SetWindowLong ფუნქცია სრულად ანაცვლებს ცვალებადი ფანჯრის პარამეტრის ინფორმაციას, ამიტომ გამოიყენეთ იგი GetWindowLong ფუნქციასთან ერთად სტილის მნიშვნელობების დასადგენად წინა მნიშვნელობის მისაღებად. მაგალითად, სტილის შეცვლა შეიძლება ასე:
:: SetWindowLong (hWnd, GWL_EXSTYLE,:: GetWindowLong (hWnd, GWL_EXSTYLE));
აქ hWnd არის ფანჯრის სახელური, რომელიც ნაპოვნია წინა ნაბიჯში აღწერილი მოქმედებების შესრულების შედეგად.
ნაბიჯი 4
გააკეთეთ ფანჯარა ნახევრად გამჭვირვალე. გამოიყენეთ SetLayeredWindowAttributes API ან შესაფუთი კლასების მეთოდები. SetLayeredWindowAttributes ფუნქციის პროტოტიპი ასე გამოიყურება:
BOOL SetLayeredWindowAttributes (HWND სთ, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);
ნაბიჯი 5
ფუნქციის hwnd პარამეტრი უნდა იყოს მართებული ფანჯრის სახელური, რომელიც მიიღება პირველ ეტაპზე. CrKey პარამეტრი არის ფერადი გასაღები, რომელიც გამოიყენება ნახევრად გამჭვირვალე არეების დასადგენად. BAlpha პარამეტრი განსაზღვრავს გამჭვირვალობის მნიშვნელობას. BAlpha პარამეტრის მნიშვნელობით 0-ის ტოლი, "ნახევრად გამჭვირვალე" ადგილები მთლიანად გამჭვირვალე იქნება. თუ bAlpha პარამეტრია 255, ისინი მთლიანად გაუმჭვირვალე იქნება. DwFlags პარამეტრი განსაზღვრავს ფანჯრის შინაარსის შემდგომი ჩვენების რეჟიმს. LWA_COLORKEY დროშის ჩათვლით dwFlags მნიშვნელობაში, ფანჯრის ნახევრად გამჭვირვალე ადგილები განისაზღვრება ფერის გასაღების საფუძველზე. როდესაც ჩართულია LWA_ALPHA დროშა, bAlpha პარამეტრი გამოყენებული იქნება გამჭვირვალობის მნიშვნელობის დასადგენად.
ნაბიჯი 6
იმისათვის, რომ მთელი ფანჯარა ნახევრად გამჭვირვალე გახადოთ, დარეკეთ SetLayeredWindowAttributes სასურველი bAlpha პარამეტრის მნიშვნელობით, LWA_ALPHA დროშით, მაგრამ არ აქვს LWA_COLORKEY დროშა. გამოიყენეთ ნაპოვნი ფანჯრის სახელური, როგორც ფუნქციის პირველი პარამეტრი. მაგალითად, ფანჯრის ნახევრად გამჭვირვალე რომ გახდეთ, გამოიყენეთ ზარი:
:: SetLayeredWindowAttributes (hWnd, RGB (0, 0, 0), 128, LWA_ALPHA);