Advertisement
5_2007-2008 Custom Controls/ Forms/ Menus #184793

Make form InVi$

This code will make your form transparent. Please Vote

AI

KI-Zusammenfassung: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Quellcode
original-source
'add this code to your module
Option Explicit 
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, _
ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As _
Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal _
nCombineMode As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As _
Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
Public Sub TransparentForm(frm As Form)
  frm.ScaleMode = vbPixels
  Const RGN_DIFF = 4
  Const RGN_OR = 2
  Dim outer_rgn As Long
  Dim inner_rgn As Long
  Dim wid As Single
  Dim hgt As Single
  Dim border_width As Single
  Dim title_height As Single
  Dim ctl_left As Single
  Dim ctl_top As Single
  Dim ctl_right As Single
  Dim ctl_bottom As Single
  Dim control_rgn As Long
  Dim combined_rgn As Long
  Dim ctl As Control
  If frm.WindowState = vbMinimized Then Exit Sub
  ' Create the main form region.
  wid = frm.ScaleX(frm.Width, vbTwips, vbPixels)
  hgt = frm.ScaleY(frm.Height, vbTwips, vbPixels)
  outer_rgn = CreateRectRgn(0, 0, wid, hgt)
  border_width = (wid - frm.ScaleWidth) / 2
  title_height = hgt - border_width - frm.ScaleHeight
  inner_rgn = CreateRectRgn(border_width, title_height, wid - border_width, _
    hgt - border_width)
  ' Subtract the inner region from the outer.
  combined_rgn = CreateRectRgn(0, 0, 0, 0)
  CombineRgn combined_rgn, outer_rgn, inner_rgn, RGN_DIFF
  ' Create the control regions.
  For Each ctl In frm.Controls
    If ctl.Container Is frm Then
      ctl_left = frm.ScaleX(ctl.Left, frm.ScaleMode, vbPixels) _
        + border_width
      ctl_top = frm.ScaleX(ctl.Top, frm.ScaleMode, vbPixels) + title_height
      ctl_right = frm.ScaleX(ctl.Width, frm.ScaleMode, vbPixels) + ctl_left
      ctl_bottom = frm.ScaleX(ctl.Height, frm.ScaleMode, vbPixels) + ctl_top
      control_rgn = CreateRectRgn(ctl_left, ctl_top, ctl_right, ctl_bottom)
      CombineRgn combined_rgn, combined_rgn, control_rgn, RGN_OR
    End If
  Next ctl
  'Restrict the window to the region.
  SetWindowRgn frm.hWnd, combined_rgn, True
End Sub
'add this to your form
Private Sub Form_Resize()
  TransparentForm Me
End Sub
Originalkommentare (3)
Wiederhergestellt von der Wayback Machine