むか~し むかし、あるところに「半透明ウィンドウ」がありました。
むか~し むかし、あるところに「半透明ウィンドウ」がありました。
モジュール (「sem_win.as」という名前で保存)
#module
//user32.asから抜き出し
#ifdef __hsp30__
#ifndef __USER32__
#define global __USER32__
#uselib "USER32.DLL"
#func global SetLayeredWindowAttributes "SetLayeredWindowAttributes" sptr,sptr,sptr,sptr
#define global GetWindowLong GetWindowLongA
#func global GetWindowLongA "GetWindowLongA" sptr,sptr
#define global SetWindowLong SetWindowLongA
#func global SetWindowLongA "SetWindowLongA" sptr,sptr,sptr
#endif
#endif
//終
#deffunc sem int _p1
if varptr(SetLayeredWindowAttributes) = 0 : dialog "Windows 2000/XP/Vistaではありません。" : end
GetWindowLong hwnd, -20
SetWindowLong hwnd, -20, stat | $80000
SetLayeredWindowAttributes hwnd, 0, _p1, 2
return
#global
サンプル (自由な名前で保存)
//※Windows 2000以降で動作
#include "sem_win.as"
title "半透明ウィンドウ"
a=0
b=1
*main
if a<=0 : b=1
if a>=255 : b=-1
a+=b
sem a
await 10
goto *main
ず~とほったらかしになってたのを載せてみました。
え!
これもすごい……
何に使おうか悩んでいますが、
ああ、閉じるときとかにスッと消えるのに
使ってみるのもいいかもしれませんね。
onexit命令を使えばいけますね!
指定したレベルに飛び、そこで透明度を0mで下げてからendにすればちょうどよくなりますね。
-----------------------------------------------------------
#include "sem_win.as"
title "ゆっくり消えるウィンドウ"
onexit *exit
stop
*exit
a=255
repeat 51
sem a
a-5
await 5
loop
end
おお、素晴らしい!
ウィンドウがこのように消えるようなソフトは見たことないです。
なるほどなあ……
あ、あれ?!
「そこで透明度を0mで下げてから」っておもいっきり入力ミスりました。確か「0に下げてから」と入力しようとした覚えがあります。すいません。
でも、この消え方は使えそうですよね。
これは笑っていいですか?
ど、どういうことでしょうか?
動作しないと言ってるのですか?
このスクリプトはWindows 2000以降でないと動作しません。