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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1001
スプラッタウィンドウのいろいろな変更6未解決


スプラッタ

リンク

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)
のように使えますよ
詳しくはヘルプを見てください



begriff

リンク

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



begriff

リンク

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



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