HSP3プログラミング入門講座
powered by Let's HSP!
各種オブジェクトの設置表示
Windows上で動作するツールなんかを無料で作成できるプログラミングツール「HSP」(公式サイト「HSPTV!」)で利用できるGUIオブジェクト。「オブジェクト」という表現はHSP用語で、Win32プログラミングの世界では「コントロール」と言います。
HSPの標準命令では以下の6種類が用意されてますな。
- ボタン (button命令) ... ボタンを押した時、指定したラベルに処理がジャンプするオブジェクト
- チェックボックス (chkbox命令) ... チェックマークのオン/オフの切り替えオブジェクト
- 入力ボックス (input命令) ... 1行分の文字列を表示、入力できるボックス
- メッセージボックス (mesbox命令) ... 複数行の文字列を表示、入力できるボックス
- リストボックス (listbox命令) ... 複数項目文字列のリストから1つを選択するボックス
- コンボボックス (combox命令) ... 複数項目文字列のドロップダウンリストから1つを選択するボックス
これらオブジェクトの設置命令以外で関連するHSP標準命令がいくつか用意されてます。
上のオブジェクトの様々な制御(表示文字列変更、表示内容変更、状態変更)を行うobjprm命令があります。
下の表はオブジェクトに対してのobjprm命令の実際の内部処理です。あくまでWin32プログラミングとしての参考情報です。
objprm命令の内部処理 | ||
HSP標準オブジェクト | 内部のウィンドウメッセージ | objprm命令の動作 |
button / input / mesbox | WM_SETTEXT (表示文字列の変更) |
表示文字列の変更 |
chkbox | BM_SETCHECK (チェックマーク状態の変更) |
チェクマークのオン・オフ |
listbox | LB_ADDSTRING の繰り返し (項目文字列の追加・特定項目の選択) |
表示文字列全体の変更 特定項目の選択 |
combox | CB_ADDSTRING の繰り返し (項目文字列の追加・特定項目の選択) |
表示文字列全体の変更 特定項目の選択 |
また、オブジェクトの表示位置を指定するpos命令、オブジェクトの表示サイズ(横幅・高さ)を指定する objsize命令、オブジェクト内の文字のフォント(表示サイズ、表示スタイル)を指定 するfont命令+objmode命令、オブジェクトを削除(撤去)するclrobj命令、特定のオブジェクト にフォーカスを移動したりフォーカスがあるオブジェクトIDを取得するobjsel命令、などがあります。
他にも、モジュール提供の形式で、設置後にオブジェクトの表示位置の変更(resizeobj命令)、表示サイズの 変更(resizeobj命令)、利用できないようオブジェクトの無効化の切り替え(objgray命令)、オブジェクトの位置とサイズの 取得(getobjsize命令)、がHSP開発環境(common\obj.hsp)に用意されてます。これらはモジュール内でWin32 API関数を呼んで処理を実現させてます。Win32 API関数を利用したオブジェクトの 非表示化も紹介。
加えてHSP 3.2では標準命令で、オブジェクトの無効化・有効化を切り替えるobjenable命令、フォーカス移動の 挙動を指定するobjskip命令、button命令を画像ボタン(イメージボタン)化するobjimage命令なんかを サポートしてます。
オブジェクトのサンプル
Let's HSP!本家のHSP3 あれこれ オブジェクト編では、HSPのsendmsg命令やWin32 API関数なんか利用して下のような標準命令では難しい発展的な処理も実現しちゃいます。サンプルコードをいろいろと掲載してます。
◇ ボタン・チェックボックス (button・chkbox)
◇ 入力ボックス・メッセージボックス (input・mesbox)
◇ リストボックス・コンボボックス (listbox・combox)
- 項目文字列の追加・挿入・削除・前後入れ替え。
- ボックス内の表示色(文字色)を変更。
- 項目文字列を取得。
- 項目の選択をリアルタイムで監視。
その他のコントロール
HSP標準の6種以外にもWindowsにはオブジェクト(Win32コントロール、コモンコントロール)やメニューバーが存在します。
オブジェクトは、HSP(HSP3)のwinobj命令(Win32コントロールの設置)で用意して、sendmsg命令(ウィンドウメッセージの送信)で細かな制御を行うことになりますが、HSPプログラミング外のWin32プログラミングの知識がイロイロと必要になってきます。(あるいは、これらの
オブジェクトを知識がなくても設置できるHSP用モジュールを利用)
- グループボックス ... グループ分けする枠を表示。(HSPの場合は表示化け現象が起こるため×)
- スタティックコントロール ... 文字列を表示。 [番号2]
- タブコントロール ... 1つのウィンドウ上に複数のウィンドウを表示し、タブつまみの選択で切り替えできる。
- ツールチップ ... オブジェクト上などで説明文字列用のポップアップチップを表示。
- リストビュー ... 複数のカラムやアイテム(項目)を持ったリスト。
- ツリービュー ... 開閉できるツリー形式でアイテム(項目)を表示。
- アップダウンコントロール ... 入力ボックスに組み込まれた数値の増減用ボタン。
- プログレスバー ... 進行状況に合わせたバーを表示。
- トラックバー ... つまみの表示位置を調整できるバー。 [番号1、番号3]
- ステータスバー ... ウィンドウの真下に表示される文字列情報表示用のバー。 [番号4]
- カレンダーコントロール ... カレンダーを表示。
- ツールバー ... ウィンドウの上部に表示されるボタンリスト。
- など 〜
⇒ ウィンドウ各部の名称 (HSP開発wiki)
オブジェクトID
HSPには「オブジェクトID」という数値があります。スクリプト上でGUIオブジェクトを設置していく順番どおりに0から 割り振られるHSP専用の数値です。オブジェクトIDを利用することになる標準の命令・関数はこちら。
オブジェクトIDを利用する命令&関数 (HSP3) | ||
clrobj命令 削除 |
objenable命令 [HSP 3.2〜] 無効化・有効化の切り替え |
objimage命令 [HSP 3.2〜] button命令の画像ボタン化 |
objinfo関数 ウィンドウハンドル取得 |
objprm命令 内容・状態の変更 |
objsel命令 フォーカスの移動 |
objskip命令 [HSP 3.2〜] フォーカスの設定 |
- | - |
getobjsize命令 [obj.asモジュール] 表示位置・表示サイズの取得 |
objgray命令 [obj.asモジュール] 無効化・有効化の切り替え |
resizeobj命令 [obj.asモジュール] 表示位置・表示サイズの変更 |
オブジェクトのウィンドウハンドル
「オブジェクトID」はHSPの世界だけでしか通用しません。Win32プログラミングの世界だと、これは「オブジェクトの
ウィンドウハンドル」に相当します。
このハンドルの値は、HSPのobjinfo関数で取得できます。第1パラメータにはHSPのオブジェクトID、第2パラメータ
には「2」を指定してください。winobj命令やsendmsg命令、Win32 API関数を利用する場合は、この関数を当然のごとく利用
することになります。
キーワード de HSP
- 無料プログラミング
- HSPダウンロード
- 実行ファイル作成
- HSP動作環境
- 演算子
- 文字列操作
- 命令・関数一覧
- アイコン変更
- PACKFILE
- PACKFILE編集
- #packopt
- #deffunc
- HSPエラー
- HSPエラー番号
- HSPエラー7
- HSPエラー12
- HSPエラー13
- HSPエラー33
- HSPエラー38
- HSPエラー41
- ホームページ作成
- バージョン
- フォント
- オブジェクト
- ボタン
- 入力ボックス
- オブジェクト非表示
- Win32 API
- メニュー
- HSPLet
- サウンド再生
- 画像
- PNGファイル
- HSP質問掲示板
- デバッグ
- ドラッグ&ドロップ
- ブラウザ作成
- HSP書籍本