ウインドウの一部のみ透明にする
koya 2013/7/19(Fri) 14:10:11|NO.55751
HSPで、ウインドウの一部のみを透明にすることはできますか
Windows 777の3D機能のようなものがどうすればできるのかわかりません。
知っている方がいれば教えてください
環境は、
OS Windows 8 64bit (Windows 7もある)
CPU Core i5 3210M (HD 4000)
メモリ : 8GB
test 2013/7/19(Fri) 15:57:47|NO.55753
「hsp ウィンドウ 透明」でGoogle検索して一番上に出るページですが、このページを参考にすればできます。
http://blog.goo.ne.jp/hiro239415/e/6860f82ef2939e3e14268e96e0479edc
これは「ウィンドウの全体を半透明にする」または「ウィンドウのある領域を完全に透明にする」が選択できますが、一部のみ半透明にしたい場合は子ウィンドウと組み合わせるなどの工夫が必要になります。
KA 2013/7/19(Fri) 16:09:02|NO.55754
こちらも参考になるでしょう
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11110471546
test 2013/7/19(Fri) 16:42:21|NO.55755
申し訳ありません。上の回答で嘘を言いました。
調べたところSetLayeredWindowAttributesの第4引数はビットフラグなので、子ウィンドウなど使わなくても、ウィンドウの一部のみ半透明にすることが可能です。
koya 2013/7/19(Fri) 16:44:24|NO.55756
KAさんのURLのスクリプトを実行しましたが白に一部だけ黒くなるだけでした。
なぜでしょうか
スクリプト
//
#uselib "user32.dll"
#func SetLayered "SetLayeredWindowAttributes" int, int, int, int
#func SetWindowLong "SetWindowLongA" int, int, int
#cfunc GetWindowLong "GetWindowLongA" int, int, int
#define LWA_COLORKEY 0x0001
#define LWA_ALPHA 0x0002
#define ctype RGB(%1 = 0, %2 = 0, %3 = 0) (int(%1) | int(%2)<<8 | int(%3)<<16)
// 透過できるようにする
SetWindowLong hWnd@hsp, GWL_EXSTYLE, GetWindowLong(hWnd@hsp, GWL_EXSTYLE) | WS_EX_LAYERED
// この関数の2番目の引数に透過色を指定
SetLayered hWnd@hsp, RGB(250, 250, 250), 255, LWA_COLORKEY
color :boxf
color 250, 250, 250
boxf 0, 0, ginfo(12)/2, ginfo(13)/2
//~
test 2013/7/19(Fri) 17:10:14|NO.55757
GWL_EXSTYLEとWS_EX_LAYEREDを定義せずに使っています。次のように定義しましょう。 #define WS_EX_LAYERED 0x80000
#define GWL_EXSTYLE -20
koya 2013/7/19(Fri) 17:13:10|NO.55758
ついでにめくられたようなようにするにはどうすればよいか、
知っている人がいれば教えてください
KA 2013/7/19(Fri) 18:15:36|NO.55759
実際にめくってみながら考えましょう。
koya 2013/7/19(Fri) 18:29:05|NO.55761
実際にめくるとはどういうことでしょうか
KA 2013/7/19(Fri) 18:54:08|NO.55762
「その辺の本でページをめくって、見え方を研究しなさい」
と言う意味です。
koya 2013/7/19(Fri) 19:05:11|NO.55763
ありがとうございました。
123 2013/7/22(Mon) 10:22:01|NO.55807
めくった画像を用意するのだ