VB6 - Làm cho một hình thức minh bạch

Một chương trình trong VB6 hoặc Visual Basic 6 có thể được sử dụng để làm cho một biểu mẫu trong suốt trong VB6 . Một số kiến ​​thức về các khái niệm và ngôn ngữ lập trình như Visual Basic là bắt buộc, để viết các chương trình trong VB6. Kiến thức cơ bản về chương trình con, các vòng lặp if và các hàm Visual Basic khác là cần thiết để viết chương trình trong VB6. Một chương trình để làm cho một biểu mẫu trong suốt trong VB6 có thể được viết bằng cách sử dụng các hàm VB6 như hàm SetLayeredWindowAttribution và các hoạt động bit, trong chương trình con do người dùng định nghĩa. Chương trình con do người dùng định nghĩa này sẽ được gọi là một sự kiện biểu mẫu, tùy thuộc vào khi biểu mẫu tải.

Bắt đầu

Dưới đây là một ví dụ ngắn gọn về cách làm cho biểu mẫu trong suốt trong Visual Basic.

Lưu ý: Phải bao gồm một bảng màu để làm việc này.

Trong một mô-đun

 Hàm khai báo riêng GetWindowLong Lib "user32" Bí danh "GetWindowLongA" (ByVal hWnd As Long, ByVal n Index As Long)

Hàm khai báo riêng tư SetWindowLong Lib "user32" Bí danh "SetWindowLongA" (ByVal hWnd As Long, ByVal n Index As Long, ByVal dwNewLong As Long)

Hàm khai báo riêng tư SetLayeredWindowAttribution Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bDefaut As Byte, ByVal dwFlags As Long) As Long

Const riêng tư GWL_EXSTYLE Dài = (-20)

Const riêng LWA_COLORKEY miễn là = & H1

Const riêng LWA_Defaut Như dài = & H2

Const riêng WS_EX_LAYERED miễn là = & H80000

'

Tính minh bạch của chức năng công cộng (ByVal hWnd As Long, tùy chọn ByVal Col As Long = vbBlack, _

Tùy chọn ByVal PcTransp As Byte = 255, ByVal TrMode tùy chọn là Boolean = True) Là Boolean

'Trả về: Đúng nếu không có lỗi.

'hWnd: hWnd của cửa sổ để làm trong suốt

'Col: Màu để làm trong suốt nếu TrMode = Sai

'PcTransp: 0 Ã 255 >> 0 = trong suốt -: - 255 = Opaque

Dim DisplayStyle As Long

Trên Lỗi GoTo Thoát

VoirStyle = GetWindowLong (hWnd, GWL_EXSTYLE)

Nếu DisplayStyle (DisplayStyle Hoặc WS_EX_LAYERED) thì

DisplayStyle = (DisplayStyle Hoặc WS_EX_LAYERED)

Gọi SetWindowLong (hWnd, GWL_EXSTYLE, DisplayStyle)

Kết thúc nếu

Độ trong suốt = (SetLayeredWindowAttribut (hWnd, Col, PcTransp, IIf (TrMode, LWA_COLORKEY Hoặc LWA_Defaut, LWA_COLORKEY)) 0)

Lối thoát hiểm:

Nếu không phải Err.Number = 0 thì Err.Clear

Chức năng kết thúc

Công khai Sub ActiveTrans minh bạch (M As Form, d As Boolean, F As Boolean, _

T_Trans minh bạch là số nguyên, màu tùy chọn miễn là dài)

Dim B là Boolean

Nếu d và F thì

'Làm cho màu sắc (ở đây là màu nền của hình dạng) trong suốt

'theo giá trị của T_Trans minh bạch

B = Độ trong suốt (M.hWnd, Màu sắc, T_Trans minh bạch, Sai)

Khác nếu sau đó

'Làm cho hình thức, bao gồm tất cả các thành phần, minh bạch

'theo giá trị của T_Trans minh bạch

B = Độ trong suốt (M.hWnd, 0, T_Trans minh bạch, Đúng)

Khác

'Phục hồi hình thức mờ đục.

B = Độ trong suốt (M.hWnd,, 255, Đúng)

Kết thúc nếu

Kết thúc phụ

Như được sử dụng trong một hình thức

 Mẫu phụ riêng_Load ()

Dim i là số nguyên

'Ví dụ: tất cả minh bạch ở tỷ lệ 140/255

'ActiveTrans minh bạch tôi, đúng, sai, 140, Me.BackColor

'Ví dụ: Mẫu trong suốt, thành phần hiển thị ở tỷ lệ 140/255

'ActiveTrans minh bạch tôi, đúng, đúng, 140, Me.BackColor

'Ví dụ hiển thị suy giảm độ trong suốt của biểu mẫu

ActiveTrans minh bạch tôi, đúng, sai, 0

Tôi

Cho i = 0 đến 255 Bước 3

ActiveTrans minh bạch cho tôi, Đúng, Sai, i

Tôi.Refresh

Tiếp theo tôi

Kết thúc phụ

Bài TrướC TiếP Theo Bài ViếT

Lên Trên LờI Khuyên