自分もHSP3.31です
#include "user32.as"
#define WS_EX_LAYERED $80000
#define LWA_COLORKEY 1
#define ULW_ALPHA 2
; 簡易的なOSチェック
if varptr(SetLayeredWindowAttributes) = 0 {
dialog "Windows 2000/XP/Vista じゃないっぽい。。。"
end
}
; 拡張ウィンドウスタイルにWS_EX_LAYEREDを追加適用
GetWindowLong hwnd, -20
SetWindowLong hwnd, -20, stat | WS_EX_LAYERED
; 透明度調節用のトラックバー
pos 200, 200
winobj "msctls_trackbar32", "", , $50000000 | $100, 200, 30
hTrackbar = objinfo(stat, 2)
; TBM_SETPOS
sendmsg hTrackbar, $405, 1, 100
sendmsg hTrackbar, $400
SetLayeredWindowAttributes hwnd, 0, 255 * stat / 100, ULW_ALPHA
; トラックバー用ウィンドウメッセージ
oncmd gosub *vscroll, $114
stop
; EM_VSCROLL
*vscroll
if lparam = hTrackbar {
; TBM_GETPOS
sendmsg hTrackbar, $400
; 第3パラに透明度 (アルファ値の範囲 0〜255)
SetLayeredWindowAttributes hwnd, 0, 255 * stat / 100, ULW_ALPHA
return
}
return
元のソースをよくわかってないのですが、これで一応意図した動きになると思います
元のソースで、実はトラックバーがウインドウに存在しているんですが、何故か見えません
適当にウインドウの中央らへんをクリックしていくとトラックバーが現れます
で、解決法は最初からサブルーチンの中を一回だけ実行させて見えるようにしてます
これがあっているかは知りませんが