Цонхыг хэрхэн хагас тунгалаг болгох вэ

Агуулгын хүснэгт:

Цонхыг хэрхэн хагас тунгалаг болгох вэ
Цонхыг хэрхэн хагас тунгалаг болгох вэ

Видео: Цонхыг хэрхэн хагас тунгалаг болгох вэ

Видео: Цонхыг хэрхэн хагас тунгалаг болгох вэ
Видео: Демон в заброшенном доме Demon in an abandoned house 2024, May
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 n өндөр, 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 параметр нь цонхны агуулгыг цааш харуулах горимыг тодорхойлдог. LWA_COLORKEY тугийг dwFlags утгад оруулахад өнгөт товчлуур дээр үндэслэн цонхны хагас тунгалаг хэсгийг тодорхойлно. LWA_ALPHA туг идэвхжсэн үед тунгалаг чанарыг тодорхойлохын тулд bAlpha параметрийг ашиглана.

Алхам 6

Цонхыг бүхэлд нь хагас тунгалаг болгохын тулд SetLayeredWindowAttributes-ийг давуу bAlpha параметрийн утга, LWA_ALPHA тугтай залгаарай, гэхдээ LWA_COLORKEY туг байхгүй. Олдсон цонхны бариулыг функцын эхний параметр болгон ашиглана уу. Жишээлбэл, цонхыг хагас тунгалаг болгохын тулд дараах дуудлагыг ашиглана уу.

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

Зөвлөмж болгож буй: