【HSPプログラミング】スクロールバーモジュール

今回は、HSPプログラミングでスクロールバーのモジュールを作ってみたので紹介します。

このモジュールでできることなど

このモジュールでは、縦横の二つのスクロールバー、サイズ変更グリップ、設置する画面、スライドさせる画面を使用して、一つのオブジェクトを作ります。

構造は単純で、設置する画面の上にスライドさせる画面を乗せて、スクロールバーを操作するごとにスライドさせる画面をその都度移動させているだけです。

Shiftキーを押しながらホイールでスクロールすると、横のスクロールバーが動きます。

なお、スクロールバー単体のみで扱うモジュールではありません。

初心者向けではない?

本モジュールでは、モジュールを使用した後、画面のリサイズや表示は自力で処理する事を前提に作っています。本モジュールは、あくまで画面付きのスクロールバーを簡単に設置できるように作ったもので、決して初心者向きではないのでご注意ください。

詳しいプログラムの例は、同封されているサンプルをご覧ください。

本モジュールを使用するオススメの場面

このモジュールでは、いくつかの画面と縦横の二つのスクロールバー、サイズ変更グリップを使用して、一つのオブジェクトを作っています。

スクロールバーを動かすことによって画面内に割り当てられているスライドさせる画面がその都度移動する様になっているため、buttonなどで作成したwindowオブジェクトをその画面に貼り付け、見た目そのまま移動させることができます。

オブジェクト毎に移動させるのではなく、画面をそのまま移動させるので、より直感的になり、管理がとても楽になると思います。

ダウンロード

更新履歴

1.0.1.0

  • スクロール時に残像が残ってしまうバグを修正しました。
  • スクリーンに最大化ボタンを追加するオプションを追加しました。

1.0.0.0

  • 公開しました。

命令一覧

初期化処理

  • 命令:WinScl_Init
  • 解説:自動で初期化されるので、指定する必要はありません。
    途中でこのプログラムを指定すると、今まで設定していた画面情報がすべて初期化されます。
    なお、今まで設置したスクロールバーなどは削除されないのでご注意ください。

スクロールバーを割り当てる(オブジェクトを作成する)

  • 命令:WinScl_Set int SetID , int VrtID , int WheelMoveX , int WheelMoveY , int ArrowMoveX , int ArrowMoveY , int PosMoveX , int PosMoveY , int ScrMode
  • 解説:オブジェクトを作成します。
    SetID=スクロールバーを設置する画面IDを指定します。
    VrtID=スクロールバーをスライドさせたときに移動させる画面IDを指定します。
    WheelMoveX、WheelMoveY=ホイールでスクロールされたときの移動量を指定します。
    ArrowMoveX、ArrowMoveY=アローボタンが押されてスクロールされたときの移動量を指定します。
    PosMoveX、PosMoveY=スクロールバーの初期位置を指定します。
    ScrMode=本オブジェクトへの追加フラグを指定します。追加フラグは、下の項目の追加フラグ「ScrMode」についてをご覧ください。

現在のスクロールバーの位置を取得

  • 関数:WinScl_GetPos int Frag
  • 解説:Frag=値を取得するためのフラグを指定します(0=横のスクロールバーの位置 1=縦のスクロールバーの位置)

現在のスクロールのポジションを変更

  • 命令:WinScl_PosSet int ID , int Posx , int Posy , int Mode
  • 解説:現在のスクロールのポジションを変更します。
    また、画面がリサイズされた場合は、自動でスクロールバーの位置を調整します。
    ID=オブジェクトID
    PosX=新しいポジションX(-1を指定すると元の値を維持します)
    PosY=新しいポジションY(-1を指定すると元の値を維持します)
    Mode=指定モード(0=新しいポジションを指定,1=現在のポジションに値を増加)

スクロールバーを全て再描画

  • 命令:WinScl_AllSet
  • 解説:何らかの不具合等でスクロールバーの表示がおかしくなった時に試してみてください。
    あるいは手動で画面サイズを変更した場合、この命令を使用する事でスクロールバーの位置を最適化してくれます。
    ※本オブジェクトに付属しているサイズ変更グリップで画面サイズを変更した場合は、この命令を使用する必要はありません。

追加フラグ「ScrMode」について

本オブジェクトへの追加フラグを指定します。

+1(横) +2(縦) : スクロールバー非表示

スクロールバーを非表示にします。非表示にしてもスクロールの機能は失われません。

+4(横) +8(縦) : 横スクロール無効

スクロールバーを無効にします。同時にスクロールバー非表示フラグも追加してください。

+16 : ウィンドウのリサイズを無効

サイズ変更グリップによるWindow画面のサイズの変更を禁止します。

また、最大化ボタン無効も同時に指定してください。

+32(横) +64(縦) : 横スクロールバー常に表示

VrtID画面よりSetID画面が大きいときは、自動でスクロールバーを非表示にしますが、このフラグを設定するとスクロールバーを常に表示します。

+128 : 最大化ボタン無効

最大化ボタンの使用を禁止します。

WM_SIZEを指定した時の注意点

本モジュールではWM_SIZE等の様々なWindowsメッセージ割り込みが指定されています。

設置する画面を独自でWM_SIZEを設定すると、その画面をリサイズした時にスクロールバーが自動調整されなくなります。

その場合はWM_SIZE割り込み実行時にWinScl_AllSetあるいはWinScl_PosSetを指定してください。

要望等

このモジュールで、こんな命令があれば便利だと思った場合などは、ぜひコメントください。もしかしたら作るかもしれないです。

error

関連記事