TOP > カテゴリ > Visual Basic >

ウインドウを透明にする

ウインドウを透明にするサンプルです。

サンプルの実行画面

ソースコード

[Trans.frm]

'■CreateRectRgn
'矩形の領域を作成してそのハンドルを取得する

'<引数>
'X1   矩形の左上隅のX座標
'Y1   矩形の左上隅のY座標
'X2   矩形の右下隅のX座標
'Y2   矩形の右下隅のX座標

'<戻り値>
'正常終了の時、矩形領域のハンドル

Private Declare Function CreateRectRgn Lib "GDI32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long


'■SetWindowRgn
'ウインドウの描画領域を設定する

'<引数>
'hWnd    ウインドウのハンドル
'hRgn    領域のハンドル
'bRedraw  領域作成後の操作↓
'            再描画するとき  1
'            再描画しないとき 0

'<戻り値>
'正常終了0以外

Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long


'■DeleteObject
'オブジェクトを削除する

'<引数>
'hObject

'<戻り値>
'正常終了0以外

Private Declare Function DeleteObject Lib "GDI32" (ByVal hObject As Long) As Long


'■SendMessage
'指定のウインドウにメッセージを送る

'<引数>
'hWnd      ウインドウのハンドル
'wMsg     定数(WM_××参照)
'wParam    定数 (HTCAPTION)
'lParam    常に0

'<戻り値>
'通常使わない

'定数はこれ以外にもある=>APIビューワー参照

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

'■ReleaseCapture
'マウスキャプチャを解放

Private Declare Sub ReleaseCapture Lib "user32" ()

Const WM_NCLBUTTONDOWN = &HA1
Const HTCAPTION = 2


Dim Flag As Boolean   'フラグ
Dim hRgn As Long      '領域のハンドル



Private Sub Command1_Click()

 Dim Ret As Long
 
   '領域を作成
     hRgn = CreateRectRgn(0, 0, Command1.Width, Command1.Height)
   
   '透明ウインドウにする
     Call SetWindowRgn(Form1.hWnd, hRgn, 1)
     
     Command1.Caption = "マウスの右ボタンで " & vbCrLf & "終了"
     
     Flag = True

End Sub
Private Sub command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

 Dim Ret As Long
    
   If Flag = False Then Exit Sub
    
     If Button = 1 Then
          
          'マウスキャプチャを解放する
          ReleaseCapture

          'Form1をドラッグせよという命令を送る
          Ret = SendMessage(Form1.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)


     Else
       
          'オブジェクトを削除する
            Ret = DeleteObject(hRgn)
            Unload Me
            End

     End If

End Sub


Private Sub Form_Load()

'ピクセルにする
 Form1.ScaleMode = 3

End Sub

ソースコード一式のダウンロード

vbapi_trans.zip 1.57 KB (1,610 バイト)

このサンプルの動作環境について

このサンプルは 「Windows98」及び「Microsoft Visual Basic 5.0 Professional Edition」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。





関連記事



公開日:2015年03月06日
記事NO:00427