Кантип терезени жарым-жартылай тунук кылуу керек

Мазмуну:

Кантип терезени жарым-жартылай тунук кылуу керек
Кантип терезени жарым-жартылай тунук кылуу керек

Video: Кантип терезени жарым-жартылай тунук кылуу керек

Video: Кантип терезени жарым-жартылай тунук кылуу керек
Video: Жарым саатта кантип эс алса болот - 2 2024, Май
Anonim

Графикалык дисплей технологияларын өркүндөтүү менен, иштөө тутумдарынын 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 nWidth, int nHyight, 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 hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);

5-кадам

Функциянын hwnd параметри биринчи кадамда алынган жарактуу терезе туткасы болушу керек. CrKey параметри - бул жарым-тунук аймактарды аныктоо үчүн колдонулган түстүү ачкыч. BAlpha параметри тунуктуктун маанисин аныктайт. BAlpha параметринин мааниси 0го барабар болгондо, "жарым тунук" аймактар толугу менен тунук болот. Эгерде bAlpha параметри 255 болсо, алар толугу менен тунук эмес болот. DwFlags параметри терезенин мазмунун андан ары көрсөтүү режимин аныктайт. DWFlags маанисине LWA_COLORKEY желеги киргенде, түстүү баскычтын негизинде терезенин жарым-жартылай ачык жерлери аныкталат. LWA_ALPHA желеги иштетилгенде, тунуктуктун маанисин аныктоо үчүн bAlpha параметри колдонулат.

6-кадам

Бүткүл терезени жарым-жартылай тунук кылуу үчүн, SetLayeredWindowAttributes параметрин артыкчылыктуу bAlpha параметринин маанисине, LWA_ALPHA желегине, бирок LWA_COLORKEY желеги жок чалыңыз. Табылган терезе туткасын функцияга биринчи параметр катары колдонуңуз. Мисалы, терезени жарым-жартылай тунук кылуу үчүн, төмөнкү чакырууну колдонуңуз:

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

Сунушталууда: