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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
1223
たこたこスクロールバー8未解決


たこたこ

リンク

2014/12/23(Tue) 18:35:12|NO.66556

ここ http://blogs.yahoo.co.jp/kerupani/15558238.html
のスクロールバーのモジュールを使用したいのですが、posでスクロールバーでスクロール出来る画面の
範囲(pos 0,40からモジュールを設置するなど)を決めるにはどのようにしたらよいのでしょうか。
うまく、伝えられてなくてすみません。
ほかの掲示板なども見たのですが、見つかりませんでした。



この記事に返信する


nepisat

リンク

2014/12/23(Tue) 19:26:26|NO.66560

こういうのがあります.
http://www.tvg.ne.jp/menyukko/cauldron/hmscroll.html
これなら位置が設定できるかと



たこたこ

リンク

2014/12/23(Tue) 21:34:54|NO.66561

nepisatさん、返信ありがとうございます。
スクロールバー自体の位置の指定はできたのですが、
僕が、言っているのは上から20pxの範囲はスクロールしても移動しないで、それ以下はスクロールすると
移動するというようにしたいのですが、どのようにしたらよいのでしょうか。
まだ、スクロールされる領域に配置するのはボタンや画像や文字などです



掘木

リンク

2014/12/23(Tue) 22:04:46|NO.66562

スクロールバーがないモデルになるものの、
http://hsp.tv/play/pforum.php?mode=pastwch&num=58463
このFunnyMakerさんの方法を参考に、
額縁役のウィンドウをメインウィンドウの上から20pix除いた領域に(子ウィンドウとして)張れば
それっぽい動きができるような気がしますよ。

スクロールバーはメインウィンドウでなく、額縁役のウィンドウに付けることになるんだろうかねえ。



たこたこ

リンク

2014/12/23(Tue) 22:41:58|NO.66563

掘木さん、返信ありがとうございます。
その方法で、やってみようとしたもの、自分ではできませんでした。
やり方を教えてもらえないでしょうか。
また、nepisatさんの方法では、どうしてもできませんか?
都合のいいことばかりいってすみませんm(_ _)m



_end

リンク

2014/12/23(Tue) 22:48:48|NO.66564

難しかったら、、
http://www.tvg.ne.jp/menyukko/cauldron/hmscroll.html
を設置して、
スクロールバーが移動したら、オブジェクトを個別に移動させる。
というのはどうでしょうか?



たこたこ

リンク

2014/12/23(Tue) 23:09:47|NO.66569

_endさん、返信ありがとうございます。
提案してくださった、やり方なのですが、オブジェクトを移動するとき、今どの位置が表示されているか
を、収集するにはどのようにしたらよいのでしょうか?
みなさんに、頼ってばかりで申し訳ないです。



_end

リンク

2014/12/24(Wed) 00:01:10|NO.66572

>>オブジェクトを移動するとき、今どの位置が表示されているかを、収集するにはどのようにしたらよいのでしょうか?
ボタン等のオブジェクトの位置やサイズ情報等を取得するには「getobjsize」命令を使います。
ちなみに、略して仮。さんのスクロールバーのモジュールをご利用になられる場合、
オブジェクトから位置情報を抜き取らなくてもできますよ。

----HSPヘルプより(getobjsize)----

オブジェクトのサイズと位置を取得します。 n2にはbuttonやlistviewなどのIDを代入します。 v1にはオブジェクトのサイズ、位置が以下のように代入されます。 v1.0 幅 v1.1 高さ v1.2 左上のx座標 v1.3 左上のy座標 v1.4 右下のx座標 v1.5 右下のy座標 各座標はウィンドウ座標系です。
また、使用するには「llmod3.hsp」と「obj.hsp」をインクルードしてください。
詳しくはHSPヘルプをご覧ください。


試しにサンプルを作ってみました。

//----初期化 #include "llmod3/llmod3.hsp" ;必要なもの #include "llmod3/obj.hsp" ;必要なもの dim s,6 ;オブジェクトの情報を入れる変数 pos 100,50 :mes "キーボードの矢印キーでボタンの位置を変更できます!" pos 120,100 :button gosub"クリック!",*ok ;ボタンの作成 ID=stat ;オブジェクトID指定 //----処理 repeat stick key,15 ;キーの取得 if key{ getobjsize s,ID ;オブジェクトの情報を取得() /* v1.0 幅 v1.1 高さ v1.2 左上のx座標 v1.3 左上のy座標 v1.4 右下のx座標 v1.5 右下のy座標 */ if key&1 :s.2-- ;左 if key&2 :s.3-- ;上 if key&4 :s.2++ ;右 if key&8 :s.3++ ;下 resizeobj ID,s ;オブジェクトの情報を設定(n3にフラグを立てるとエラーになる? 私だけ??) } await 6 loop //----クリック! *ok dialog "クリック!!" return



掘木

リンク

2014/12/24(Wed) 22:36:38|NO.66601

・・・こちらの技術でも無理でしたorz

惜しいところまではいけるんですけどあと1歩の状況が埋まりませんね・・・。
無理やりやっても違和感が残る・・・。
何より条件が厳しい。もう少し絞れるならそれに見合ったコードがありそう。
現状のままは厳しい気がする。詳しい方なら解決できるかも?

>>NO.66563
衣日和氏のモジュールはスクロールの検知とスクロールバーの設置であって、
スクロールバーの操作時の処理はモジュールの外部です。
結果、スクロールバーを利用するのならモジュールは使用する方が楽だと思いますよ。

以下、失敗作(モジュール部分はリンク先より補完してください)

//   //  衣日和氏のモジュール部分省略 //   #uselib "user32.dll" #func SetParent "SetParent" int,int #func SetWindowPos "SetWindowPos" int,int ,int,int ,int,int ,int #func SetWindowLong "SetWindowLongA" int,int,int #cfunc GetWindowLong "GetWindowLongA" int,int #define WS_POPUP 0x80000000 #define WS_CHILD 0x40000000 #const WS_POPUP_INV 0xFFFFFFFF^WS_POPUP #define GWL_STYLE 0xFFFFFFF0 #define SWP_NOSIZE 0x01 #define SWP_NOZORDER 0x04 #define SWP_NOACTIVATE 0x10 #define SWP_NOOWNERZORDER 0x0200 #define DIVPOINTY 20 #define MAINWIDTH 320 #define MAINHEIGHT 240 #define ELEMENTWIDTH MAINWIDTH #define ELEMENTHEIGHT 840 #define SCR_MAIN 0 #define SCR_SCROLLAREA 1 #define SCR_FULLAREA 2 dialog "bmp;*.jpg;*.gif", 16, "画像ファイル" if stat == 0 : mes "キャンセル" : stop FileName = refstr bgscr SCR_FULLAREA,ELEMENTWIDTH,ELEMENTHEIGHT,2,0,-DIVPOINTY gsel SCR_FULLAREA picload FileName,1 objsize 120,24,24 repeat ELEMENTHEIGHT/24 button "ボタン"+cnt,*buttonhit loop picsizex = ginfo_sx : picsizey = ginfo_sy barfat = ScrollBar_GetSystemSize() fullareahwnd = hwnd SetWindowLong hwnd,GWL_STYLE,GetWindowLong(hwnd,GWL_STYLE)&WS_POPUP_INV|WS_CHILD screen SCR_MAIN,MAINWIDTH+barfat,MAINHEIGHT mainhwnd = hwnd bgscr SCR_SCROLLAREA,MAINWIDTH,MAINHEIGHT-DIVPOINTY,2,0,DIVPOINTY SetWindowLong hwnd,GWL_STYLE,GetWindowLong(hwnd,GWL_STYLE)&WS_POPUP_INV|WS_CHILD SetParent hwnd,mainhwnd SetParent fullareahwnd,hwnd gsel SCR_FULLAREA,1 gsel SCR_SCROLLAREA,1 gsel SCR_MAIN gosub *createscrollbar gosub *onscroll labeltmp = *onscroll ScrollBar_SetSubLabel labeltmp gsel SCR_MAIN,1 stop *createscrollbar pos ginfo_winx - barfat, 0 ScrollBar_Create barfat, ginfo_winy , 1 YBarID = stat ;たてスクのHSPオブジェクトID ScrollBar_SetRange YBarID, DIVPOINTY , picsizey - 1, ginfo_winy ScrollBar_SetStep YBarID, 24, ginfo_winy ScrollBar_SetPos YBarID, DIVPOINTY return *onscroll swpprm = SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOOWNERZORDER SetWindowPos fullareahwnd,0,0,-ScrollBar_GetPos(YBarID),0,0,swpprm pos 0,0 gcopy SCR_FULLAREA,0,0,ELEMENTWIDTH,DIVPOINTY return *buttonhit dialog "ボタンを押した"
境界線が分かりづらいですね・・・。
見ての通り画面上部にオブジェクトがでません。メインウィンドウに直接張ることで改善できますが、
非スクロールエリアからはみ出すように設置するケースに対応ができません。
どーやって対応するんでしょうかねえ。



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