ウインドウの透明度変更 <TOP>
ウインドウ(フォーム)の透明度をスクロールバーで変更しています。例では、カラーキーの設定はしていません。
GetWindowLong 指定されたウィンドウに関しての情報を取得
SetWindowLong 指定されたウィンドウの属性を変更
SetLayeredWindowAttributes レイヤードウィンドウの不透明および透明のカラーキーを設定
左:起動時Alpha値最大255 右:Alpha値220
左:Alpha値140 右:Alpha値60(スクロールバーの最小値は25に設定しています)
関連
'================================================================ '= ウインドウの透明度変更 '= (SetLayeredWindowAttributes.bas) '================================================================ #include "Windows.bi" #define LWA_ALPHA 2 'bAlphaをアルファー値として使う #define LWA_COLORKEY 1 'crKeyを透明色として使う(dwFlagsの定数) #define GWL_EXSTYLE -20 '拡張ウィンドウスタイル #define WS_EX_LAYERED &H80000 '透明なウィンドウ属性(Windows2000以上) ' 指定されたウィンドウに関しての情報を取得。また、拡張ウィンドウメモリから、指定されたオフセットにある32ビット値を取得することもできる Declare Function Api_GetWindowLong& Lib "user32" Alias "GetWindowLongA" (ByVal hWnd&, ByVal nIndex&) ' 指定されたウィンドウの属性を変更。また、拡張ウィンドウメモリの指定されたオフセットの32ビット値を書き換えることができる Declare Function Api_SetWindowLong& Lib "user32" Alias "SetWindowLongA" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&) ' レイヤードウィンドウの不透明および透明のカラーキーを設定 Declare Function Api_SetLayeredWindowAttributes& Lib "user32" Alias "SetLayeredWindowAttributes" (ByVal hWnd&, ByVal crKey&, ByVal bAlpha As Byte, ByVal dwFlags&) Var Shared Text1 As Object Var Shared HScroll1 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 HScroll1.Attach GetDlgItem("HScroll1") '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Var Ret As Long HScroll1.SetScrollRange 25,255 HScroll1.SetScrollStep 5, 10 HScroll1.SetScrollPos 255 Text1.SetWindowtext format$(255, "Alpha:###") Ret = Api_GetWindowLong(GethWnd, GWL_EXSTYLE) Ret = Ret Or WS_EX_LAYERED Ret = Api_SetWindowLong(GethWnd, GWL_EXSTYLE, Ret) End Sub '================================================================ '= '================================================================ Declare Sub HScroll1_Change edecl () Sub HScroll1_Change() Var Alpha As Byte Var Ret As Long '半透明化(25 〜 255) Alpha = HScroll1.GetScrollPos Text1.SetWindowtext format$(Alpha, "Alpha:###") Ret = Api_SetLayeredWindowAttributes(GethWnd, 0, Alpha, LWA_ALPHA) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End