VB6 - Làm cho một hình thức minh bạch
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ụ