Hola, si se puede con api's seria algo asi:
Código vb:
Ver originalOption Explicit
Private Const BDR_SUNKENOUTER = &H2
Private Const BDR_RAISEDINNER = &H4
Private Const DT_EDITCONTROL = &H2000&
Private Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)
Private Const BF_BOTTOM = &H8
Private Const BF_LEFT = &H1
Private Const BF_RIGHT = &H4
Private Const BF_TOP = &H2
Private Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)
Private Const DT_LEFT = &H0
Private Const DT_TOP = &H0
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function BitBlt Lib "gdi32" (ByVal hDCDest As Long, ByVal XDest As Long, ByVal YDest As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hDCSrc As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function DrawCaption Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long, pcRect As RECT, ByVal un As Long) As Long
Private Declare Function DrawEdge Lib "user32" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long
Private Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Sub Command1_Click()
Call FrameTransparente(Me, Frame1)
End Sub
Private Sub Form_Load()
Me.AutoRedraw = True
End Sub
Private Sub FrameTransparente(ByVal pForm As Form, ByVal pControl As Frame)
Static blnTrans As Boolean
Dim MyRect As RECT
Dim X1&, Y1&, X2&, Y2&
Dim strText As String
Dim TempDC As Long
blnTrans = Not blnTrans
With pControl
If blnTrans Then
pForm.Cls
pForm.ScaleMode = vbPixels
X1 = .Left - 2
Y1 = .Top - 2
X2 = X1 + .Width + 4
Y2 = Y1 + .Height + 4
SetRect MyRect, X1, Y1, X2, Y2
SetRect MyRect, X1, Y1, X2, Y2
DrawEdge pForm.hdc, MyRect, EDGE_ETCHED, BF_RECT
strText = .Caption
SetRect MyRect, X1 + 10, Y1 - 5, X2, Y2
DrawText pForm.hdc, strText, Len(strText), MyRect, DT_LEFT Or DT_TOP
TempDC = GetDC(.hWnd)
BitBlt TempDC, 0, 0, .Width, .Height, .Parent.hdc, .Left, .Top, vbSrcCopy
Else
pForm.Cls
.Refresh
End If
End With
End Sub
pero por ahi es mejor crearte vos mismo un frame simulado con algunas lineas y te queda mejor que ese...
saludos.