HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0811
Humi影つきウィンドウ CS_DROPSHADOWについて3解決


Humi

リンク

2013/8/11(Sun) 15:38:54|NO.56279

bgscrで枠なしウィンドウを作成して
SetLayeredWindowAttributes で任意の色を透過して
●だけを表示できるようにしたんですが
ウィンドウクラスのスタイルに CS_DROPSHADOW をつけても
影が円形に、ウィンドウにそってついてくれません。
あと普通のウィンドウよりも影が小さく、
非アクティブになっても影の大きさが変わりません
なんかそれようのソースを探してるんですが、なかなかみつかりません。
ソースはC/C++でもいいですDLLにするので、
だれかお願いします。

※XP以上じゃないと正常にならないと思います。

#uselib "user32.dll" #func SetLayered "SetLayeredWindowAttributes" int, int, int, int #func SetClassLong "SetClassLongA" int, int, int #func SetWindowLong "SetWindowLongA" int, int, int #cfunc GetClassLong "GetClassLongA" int, int #cfunc GetWindowLong "GetWindowLongA" int, int #define global GCL_STYLE -26 #define global GWL_EXSTYLE -20 #define global WS_EX_LAYERED 0x00080000 #define global LWA_COLORKEY 0x0001 #define global CS_DROPSHADOW 0x00020000 bgscr 0, 640, 480, 2 hMWnd = hwnd@hsp SetWindowLong hMWnd, GWL_EXSTYLE, GetWindowLong(hMWnd, GWL_EXSTYLE) | WS_EX_LAYERED SetLayered hMWnd, RGB(1, 2, 3), 255, LWA_COLORKEY SetClassLong hMWnd, GCL_STYLE, GetClassLong(hMWnd, GCL_STYLE) | CS_DROPSHADOW color 1, 2, 3 :boxf :color 0, 0, 255 circle@hsp 0, 0, ginfo(12), ginfo(13), 1 gsel 0, 1 oncmd gosub *WindowProc, WM_LBUTTONDOWN stop *WindowProc switch iparam case WM_LBUTTONDOWN sendmsg hMWnd, WM_NCLBUTTONDOWN, 2 swbreak swend return



この記事に返信する


リンク

2013/8/12(Mon) 08:20:45|NO.56289

UpdateLayeredWindow で出来るんじゃないかなぁ・・・
ttp://d.hatena.ne.jp/As_hsp/20091215/1260842075



Humi

リンク

2013/8/12(Mon) 11:54:22|NO.56292

やっぱりそれしかないですかね〜(^^;)
HSPの描画関係の命令が全滅するんですよねーそれ
まぁどっかのサイトであったそのウィンドウの上にさらに透過ウィンドウでもはっつけて
なんとかしてみますわ。
情報提供ありがとです。



(’’

リンク

2013/8/12(Mon) 13:26:43|NO.56294

ウィンドウリージョンを設定したら影が消えるのはWindowsの技術的な仕様なのでどうにかするには自作するしか・・・

http://www.enoie.net/blog/2012/03/%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6-%E3%81%BE%E3%81%A8%E3%82%81/

頑張ってください



ONION software Copyright 1997-2023(c) All rights reserved.