Bir Pəncərəni Yarı şəffaf Etmək Necədir

Mündəricat:

Bir Pəncərəni Yarı şəffaf Etmək Necədir
Bir Pəncərəni Yarı şəffaf Etmək Necədir

Video: Bir Pəncərəni Yarı şəffaf Etmək Necədir

Video: Bir Pəncərəni Yarı şəffaf Etmək Necədir
Video: Праздник (2019) Кинотеатральная версия 2024, Aprel
Anonim

Qrafik ekran texnologiyalarının təkmilləşdirilməsi ilə əməliyyat sistemlərinin API-si də yaxşılaşdı və proqramçılara standart olmayan interfeys elementlərinin inkişafı üçün getdikcə daha çox imkanlar verdi. Beləliklə, Windows 2000 əməliyyat sisteminin yeniliklərindən biri hissələri şəffaf ola bilən laylı pəncərələr idi. Tezliklə, qatı pəncərələrlə işləmək üçün API-nin təsviri MSDN-də mövcud oldu. Bununla birlikdə, proqramçıların forumlarında bir pəncərənin yarı şəffaf olmasına dair suallar hələ də soruşulur.

Bir pəncərəni yarı şəffaf etmək necədir
Bir pəncərəni yarı şəffaf etmək necədir

Zəruri

  • - tərtibçi;
  • - Windows sdk və ya Windows proqramlaşdırma üçün çərçivə.

Təlimat

Addım 1

Yarı şəffaf etmək istədiyiniz pəncərədən bir qolu əldə edin. Bir pəncərə tapın və ya yaradın. Yaratmaq üçün ya CreateWindow, CreateWindowEx API funksiyalarından və ya istifadə olunan çərçivənin siniflərinə aid olan bu funksiyaların ətrafındakı sarma metodlarından istifadə edin. CreateWindow funksiyası üçün prototip belə görünür:

HWND CreateWindow (LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int n genişlik, int nHündürlük,

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

Gördüyünüz kimi, funksiya icrası nəticəsində yaradılan pəncərəyə bir sapı qaytarır. Hər hansı bir sarğı sinfi istifadə olunursa, sapı əldə etmək üçün yaradılmış pəncərəyə uyğun obyekt üzərində metodlarından istifadə edin.

Addım 2

Pəncərə tapmaq API çağırışları FindWindow, FindWindowEx, EnumWindows, EnumChildWindows, EnumThreadWindows və onların birləşmələrindən istifadə etməklə edilə bilər. WindowFromPoint və ChildWindowFromPoint funksiyalarından istifadə edərək müəyyən bir sahədəki bir pəncərənin işini əldə edə bilərsiniz.

Addım 3

Pəncərəni WS_EX_LAYERED genişləndirilmiş tərzinə qoyun. SetWindowLong API və ya bənzər obyektlərin müvafiq metodlarından istifadə edin. SetWindowLong funksiyası dəyişdirilə bilən pəncərə parametri məlumatlarını tamamilə əvəz edir, beləliklə stil bayraqları dəsti üçün əvvəlki dəyəri almaq üçün GetWindowLong funksiyası ilə birlikdə istifadə edin. Məsələn, stil belə dəyişdirilə bilər:

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

Burada hWnd, əvvəlki addımda təsvir olunan hərəkətlərin yerinə yetirilməsi nəticəsində tapılan pəncərə sapıdır.

Addım 4

Pəncərəni yarı şəffaf edin. SetLayeredWindowAttributes API və ya sarğı siniflərinin metodlarından istifadə edin. SetLayeredWindowAttributes funksiyası prototipi belə görünür:

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

Addım 5

Funksiyanın hwnd parametri ilk addımda əldə edilmiş etibarlı bir pəncərə sapı olmalıdır. CrKey parametri yarı şəffaf sahələri təyin etmək üçün istifadə olunan rəng düyməsidir. BAlpha parametri şəffaflıq dəyərini təyin edir. BAlpha parametri dəyəri 0-a bərabər olduqda, "yarı şəffaf" sahələr tamamilə şəffaf olacaqdır. BAlpha parametri 255 olarsa, tamamilə qeyri-şəffaf olacaqlar. DwFlags parametri pəncərə məzmununun daha çox göstərilmə rejimini təyin edir. LWA_COLORKEY bayrağı dwFlags dəyərinə daxil edildikdə, rəng düyməsinə əsasən pəncərənin yarı şəffaf sahələri müəyyənləşdiriləcəkdir. LWA_ALPHA bayrağı aktiv edildikdə, şəffaflıq dəyərini təyin etmək üçün bAlpha parametri istifadə ediləcəkdir.

Addım 6

Pəncərənin hamısını yarı şəffaf etmək üçün, üstünlük verilən bAlpha parametri dəyəri olan LWA_ALPHA bayrağına, lakin LWA_COLORKEY bayrağına sahib olmayan SetLayeredWindowAttributes çağırın. Tapılan pəncərə dəstəyini funksiyanın ilk parametri kimi istifadə edin. Məsələn, bir pəncərəni yarı şəffaf etmək üçün zəngdən istifadə edin:

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

Tövsiyə: