ホーム > カテゴリ > 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


この記事を書いた人

💻 ITスキル・経験
サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。

画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ
プチモンテ代表、アーティスト名:プチモンテ
🎵 音楽制作
BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~

オリジナル曲を始めました✨

YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte

【男性ボーカル】DA・KA・RA | 新たな明日が風と共に訪れる

【男性、女性ボーカル】時空を超越する先に | 時空と風の交響曲

【女性、男性ボーカル】絆 | 穏やかな心に奏でる旋律