各種オブジェクトの設置表示

Windows上で動作するツールなんかを無料で作成できるプログラミングツール「HSP」(公式サイト「HSPTV!」)で利用できるGUIオブジェクト。「オブジェクト」という表現はHSP用語で、Win32プログラミングの世界では「コントロール」と言います。

HSPの標準命令では以下の6種類が用意されてますな。

これらオブジェクトの設置命令以外で関連する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命令なんかを サポートしてます。

HSPがサポートする命令&関数の一覧

オブジェクトのサンプル

Let's HSP!本家のHSP3 あれこれ オブジェクト編では、HSPのsendmsg命令やWin32 API関数なんか利用して下のような標準命令では難しい発展的な処理も実現しちゃいます。サンプルコードをいろいろと掲載してます。

ボタン・チェックボックス (button・chkbox)

入力ボックス・メッセージボックス (input・mesbox)

リストボックス・コンボボックス (listbox・combox)

その他のコントロール

ちょっと特殊なオブジェクトを利用してるHSP製プログラム HSP標準の6種以外にもWindowsにはオブジェクト(Win32コントロール、コモンコントロール)やメニューバーが存在します。
 オブジェクトは、HSP(HSP3)のwinobj命令(Win32コントロールの設置)で用意して、sendmsg命令(ウィンドウメッセージの送信)で細かな制御を行うことになりますが、HSPプログラミング外のWin32プログラミングの知識がイロイロと必要になってきます。(あるいは、これらの オブジェクトを知識がなくても設置できるHSP用モジュールを利用)

ウィンドウ各部の名称 (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ミニ講座

★ Yahoo!経由用ページ : ファイル | フォルダ | メニュー | マウス | ウィンドウ | オブジェクト | 文字列 | システム | 関数 | sendmsg命令 | その他 | サイトマップ | リンク