|
|
2008/10/1(Wed) 16:55:09|NO.19897
ウィンドウのことについて2つ質問させていただきます。
1.HSPTVのように、ウィンドウの形を変えるにはどうしたらよろしいのでしょうか。
2.HSPのタイトルバーなどはクリックしてマウスを動かすとウィンドウの位置が動きますが、
この仕組みを自分で決めたところにつけることはできないのでしょうか。
width命令などを駆使してもできませんでした。
どうすればできるようになるか教えてください。
|
|
2008/10/1(Wed) 17:23:36|NO.19898
1についてはこちらを
http://yokohama.cool.ne.jp/chokuto/urawaza/windowrgn.html
2は説明できなかったのでサンプルを作りました
screen 0, 640,480
color 255: boxf 160,120, 480,360
repeat
stick LFirstKey
getkey LKey, 1
pget mousex, mousey
if ginfo_g = 0 {
if LFirstKey = 256 {
mx = ginfo_wx1-ginfo_mx
my = ginfo_wy1-ginfo_my
}
if LKey = 1 {
width , , ginfo_mx+mx, ginfo_my+my
}
}
wait 1
loop
|
|
2008/10/1(Wed) 17:43:06|NO.19902
たこさんありがとうございます。
たこさんに質問なのですが、
1についての回答のURLにかかれているllmod.asは何処で手に入れることができるのですか。
さらに質問なのですが、2についてのサンプルで、赤い部分をクリックして動かした後、
もう一度クリックすると最初の場所に戻ってしまうのですが、
どうすれば戻らないようになるのですか。
|
|
2008/10/1(Wed) 17:54:33|NO.19904
|
|
2008/10/1(Wed) 22:54:27|NO.19912
1については左クリックされてない時にmxとmyの値をリセットすればいいかと思います
(こっちでその現象が再現できませんでした)
2は入手先がわからないのですが、CreateRectRgnなどの関数を
// 例
#uselib "gdi32.as"
#cfunc CreateRectRgn "CreateRectRgn" sptr,sptr,sptr,sptr
hrgn = CreateRectRgn(0,0, winx,winy)
のように使えますよ
詳しくはヘルプを見てください
|
|
2008/10/2(Thu) 02:31:29|NO.19916
どうも、begriffと申します。
参考になれば、幸いです。
#module
#uselib "user32.dll"
#define global GWL_EXSTYLE -20
#func global work1 "GetWindowLongA" int,int
#func global work2 "SetWindowLongA" int,int,int
#func global work3 "SetLayeredWindowAttributes" int,int,int,int
#deffunc wintra int p,int m,int red,int gre,int blu
poke colo,0,red
poke colo,1,gre
poke colo,2,blu
work1 hwnd,GWL_EXSTYLE@
work2 hwnd,GWL_EXSTYLE@,0x00080000
work3 hwnd,colo,(255*p)/100,m
return
#global
bgscr 0,640,480
wintra 0,1,255,0,255
redraw 0
color 255,0,255:boxf
color 128,192,255
circle 0,0,50,50
color
circle 0,0,50,50,0
color 128,192,255
boxf 25,0,640-25,25
color 255,128,192
boxf 640-50,0,640-25,25
circle 640-50,0,640,50
color
circle 640-50,0,640,50,0
color 255,128,192
boxf 640-50,0,640-25,25
color 128,0,0
pos 640-32+1,5
font "",,1
mes "X"
pos 640-32-1,5
mes "X"
color 255,255,255
pos 640-32,5
font "",,1
mes "X"
color 64,128,192
circle 0,480-50,50,480
circle 640-50,480-50,640,480
color
circle 0,480-50,50,480,0
circle 640-50,480-50,640,480,0
color 64,128,192
boxf 0,25,640,480-25
boxf 25,25,640-25,480
color
line -1,25,640,25
line 640-50,-1,640-50,25
line 24,0,640-25,0
line 0,24,0,480-25
line 24,480-1,640-25,480-1
line 640-1,24,640-1,480-25
color
font "",,1
pos 320-80,5
mes "TEST window title"
redraw 1
onclick gosub *cli
pos 12,25+12
sysfont 17
mes "Test window"
stop
*cli
if mousey<=25&& mousex<=640-50{
sendmsg hwnd ,$a1,2,z
}
if mousey<=25&& mousex>640-50{
end
}
return

| |
|
2008/10/2(Thu) 03:26:54|NO.19917
蛇足かも知れないが 応用みたいなもの
#define mmousex (ginfo(0)-(ginfo(4)+(ginfo(10)-ginfo(12))/2))
#define mmousey (ginfo(1)-(ginfo(5)+(ginfo(11)-ginfo(13))-(ginfo(10)-ginfo(12))/2))
#module
#deffunc grad int x1_ ,int y1 ,int x2 ,int y2 ,int c,int d,int e
x1=x1_-1:repeat y2-y1+1:a=128*cnt/(y2-y1+1)
hsvcolor c,d,a+64+e
line x1,cnt+y1,x2,cnt+y1:loop
a=(y2-y1+1)/3:b=(y2-y1+1)/6
repeat a:a=128*cnt/(y2-y1+1)/4
hsvcolor c,d/2,a+(256-128)/2+48+e
line x1,b+cnt+y1,x2,b+cnt+y1:loop
return
#global
bgscr 0,600,400
randomize
c=rnd(128)+(192-128)/2
c2=rnd(192)
repeat
redraw 0
gosub *draw
wait 1
redraw 1
loop
*draw
hsvcolor c,46,255:boxf
grad 0,0,600-52,26,c,255,0
grad 600-52,0,600,26,0,255,0
stick k:kk=0:if k&&256:kk=1
if mmousey<=26{
if mmousex<600-52{
grad 0,0,600-52,26,c,192,300
if kk:sendmsg hwnd ,$a1,2,z
}else{grad 600-52,0,600,26,0,192,300
if kk:end
}}
color 255,255,255:font "",,1:pos 270,6:mes "Title"
grad 200,300,288,321,c2,255,0
color 255,255,255:font "",,1:pos 236,303:mes "OK"
return
|
|