วิธีทำหน้าต่างกึ่งโปร่งใส

สารบัญ:

วิธีทำหน้าต่างกึ่งโปร่งใส
วิธีทำหน้าต่างกึ่งโปร่งใส

วีดีโอ: วิธีทำหน้าต่างกึ่งโปร่งใส

วีดีโอ: วิธีทำหน้าต่างกึ่งโปร่งใส
วีดีโอ: สอนทำรูปโปรไฟล์โปรงใส มองทะลุได้ ในแอพ Tiktok ง่ายมากๆ [Nonny.com] 2024, พฤศจิกายน
Anonim

ด้วยการปรับปรุงเทคโนโลยีการแสดงผลกราฟิก API ของระบบปฏิบัติการยังได้รับการปรับปรุง ทำให้โปรแกรมเมอร์มีโอกาสมากขึ้นในการพัฒนาองค์ประกอบอินเทอร์เฟซที่ไม่ได้มาตรฐาน ดังนั้นหนึ่งในนวัตกรรมของระบบปฏิบัติการ Windows 2000 คือหน้าต่างแบบแบ่งชั้น ซึ่งบางส่วนอาจโปร่งแสงได้ ในไม่ช้า คำอธิบายของ API สำหรับการทำงานกับหน้าต่างแบบมีเลเยอร์ก็พร้อมใช้งานบน MSDN อย่างไรก็ตาม ในฟอรัมของโปรแกรมเมอร์ คำถามเกี่ยวกับวิธีการทำให้หน้าต่างเป็นแบบกึ่งโปร่งใสยังคงถูกถามอยู่

วิธีทำหน้าต่างกึ่งโปร่งใส
วิธีทำหน้าต่างกึ่งโปร่งใส

จำเป็น

  • - คอมไพเลอร์;
  • - windows sdk หรือเฟรมเวิร์กสำหรับการเขียนโปรแกรม windows

คำแนะนำ

ขั้นตอนที่ 1

รับแฮนเดิลของหน้าต่างที่คุณต้องการทำให้กึ่งโปร่งใส ค้นหาหรือสร้างหน้าต่าง ในการสร้าง ให้ใช้ฟังก์ชัน CreateWindow, CreateWindowEx API หรือเมธอด wrapper รอบฟังก์ชันเหล่านี้เป็นของคลาสของเฟรมเวิร์กที่ใช้ ต้นแบบสำหรับฟังก์ชัน CreateWindow มีลักษณะดังนี้:

HWND CreateWindow (LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwสไตล์, อินท์ x, อินท์ y, int nWidth, int nความสูง, HWND hWndผู้ปกครอง, HMENU hเมนู, คำแนะนำ hInstance,

LPVOID lpParam);

อย่างที่คุณเห็น ฟังก์ชันส่งคืนหมายเลขอ้างอิงไปยังหน้าต่างที่สร้างขึ้นอันเป็นผลมาจากการดำเนินการ หากมีการใช้คลาส wrapper ให้ใช้เมธอดของมันบนวัตถุที่สอดคล้องกับหน้าต่างที่สร้างขึ้นเพื่อรับหมายเลขอ้างอิง

ขั้นตอนที่ 2

การค้นหาหน้าต่างสามารถทำได้โดยใช้การเรียก API FindWindow, FindWindowEx, EnumWindows, EnumChildWindows, EnumThreadWindows และการรวมกัน คุณสามารถรับหมายเลขอ้างอิงของหน้าต่างภายในพื้นที่เฉพาะโดยใช้ฟังก์ชัน WindowFromPoint และ ChildWindowFromPoint

ขั้นตอนที่ 3

ตั้งค่าหน้าต่างเป็นแบบขยาย WS_EX_LAYERED ใช้ SetWindowLong API หรือวิธีการที่เกี่ยวข้องของออบเจ็กต์ wrapper ฟังก์ชัน SetWindowLong จะแทนที่ข้อมูลพารามิเตอร์หน้าต่างที่ปรับเปลี่ยนได้อย่างสมบูรณ์ ดังนั้นให้ใช้ร่วมกับฟังก์ชัน GetWindowLong เพื่อดึงค่าก่อนหน้าสำหรับชุดของแฟล็กลักษณะ ตัวอย่างเช่น สามารถเปลี่ยนสไตล์ได้ดังนี้:

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

ที่นี่ hWnd คือหมายเลขอ้างอิงของหน้าต่างที่พบอันเป็นผลมาจากการดำเนินการที่อธิบายไว้ในขั้นตอนก่อนหน้า

ขั้นตอนที่ 4

ทำให้หน้าต่างกึ่งโปร่งใส ใช้ SetLayeredWindowAttributes API หรือเมธอดของคลาส wrapper ต้นแบบฟังก์ชัน SetLayeredWindowAttributes มีลักษณะดังนี้:

บูล SetLayeredWindowAttributes (HWND hwnd, COLORREF crKey, ไบต์บีอัลฟา, DWORD dwFlags);

ขั้นตอนที่ 5

พารามิเตอร์ hwnd ของฟังก์ชันต้องเป็นหมายเลขอ้างอิงหน้าต่างที่ถูกต้องซึ่งได้รับในขั้นตอนแรก พารามิเตอร์ crKey เป็นคีย์สีที่ใช้กำหนดพื้นที่กึ่งโปร่งใส พารามิเตอร์ bAlpha ระบุค่าความโปร่งแสง ด้วยค่าพารามิเตอร์ bAlpha เท่ากับ 0 พื้นที่ "กึ่งโปร่งใส" จะโปร่งใสโดยสมบูรณ์ หากพารามิเตอร์ bAlpha เป็น 255 พารามิเตอร์จะทึบแสงทั้งหมด พารามิเตอร์dwFlagsกำหนดโหมดการแสดงเนื้อหาของหน้าต่างเพิ่มเติม เมื่อค่าสถานะ LWA_COLORKEY รวมอยู่ในค่า dwFlags พื้นที่กึ่งโปร่งใสของหน้าต่างจะถูกกำหนดโดยยึดตามคีย์สี เมื่อเปิดใช้งานแฟล็ก LWA_ALPHA พารามิเตอร์ bAlpha จะถูกใช้เพื่อกำหนดค่าความโปร่งแสง

ขั้นตอนที่ 6

เมื่อต้องการทำให้หน้าต่างทั้งหมดเป็นแบบกึ่งโปร่งใส ให้เรียก SetLayeredWindowAttributes ด้วยค่าพารามิเตอร์ bAlpha ที่ต้องการ ค่าสถานะ LWA_ALPHA แต่ไม่มีค่าสถานะ ใช้ตัวจัดการหน้าต่างที่พบเป็นพารามิเตอร์แรกในฟังก์ชัน ตัวอย่างเช่น หากต้องการทำให้หน้าต่างโปร่งใสครึ่งหนึ่ง ให้ใช้การโทร:

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