あまり実用性があるとはいえませんが、Accessのフォームの一部をくり抜いて、背景が透けて見えるフォームの作り方を紹介します。
ここでは「リージョン」を操作するWindows APIを用いて、ある領域をくり抜きます。リージョンとはいくつかの点から構成される領域のことで、くり抜きや塗りつぶしなどの設定、あるいは領域の判定に使ったりするものです。
透けるフォームを作るには、次のようなコードをそのフォームのモジュールに記述します。
Option Compare Database
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
Private Declare Function DeleteObject Lib "GDI32" _
(ByVal hObject As Long) As Long
Private Const RGN_AND = 1
Private Const RGN_OR = 2
Private Const RGN_XOR = 3
Private Const RGN_DIFF = 4
Private Const RGN_COPY = 5
Private Sub Form_Load()
'フォーム読み込み時
Dim lngFrmRgnhWnd As Long
Dim lngRgnhWnd As Long
Dim lngCombineRgn As Long
'フォーム全体のリージョンを作成
lngFrmRgnhWnd = CreateRectRgn(0, 0, Me.InsideWidth / 12, Me.InsideHeight / 12)
'四角形のリージョンを作成
lngRgnhWnd = CreateRectRgn(50, 50, 230, 200)
'描画用リージョンを作成
lngCombineRgn = CreateRectRgn(0, 0, 0, 0)
'リージョンを結合(フォームから四角形エリアをくり抜き)
CombineRgn lngCombineRgn, lngFrmRgnhWnd, lngRgnhWnd, RGN_DIFF
'リージョンを再描画
SetWindowRgn Me.hWnd, lngCombineRgn, True
'リージョンの削除
DeleteObject lngFrmRgnhWnd
DeleteObject lngRgnhWnd
DeleteObject lngCombineRgn
End Sub
実行画面:

|