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