HSP3プログラミング入門講座
powered by Let's HSP!
オブジェクトを一時的に非表示に
Windowsプログラミングツール「HSP 3.x」(公式サイト「HSPTV!」)で設置 できる各種オブジェクト、・・・ボタン(button命令)、チェックボックス(chkbox命令)、リストボックス(listbox命令)、 コンボボックス(combox命令)、入力ボックス(input命令)、メッセージボックス(mesbox命令)。
HSP標準命令ではオブジェクトの完全撤去(消去、クリア)にclrobj命令 が用意されてます。これは完全にオブジェクトがなくなってしまうため、表示の復帰はできません。あくまでオブジェクトを再設置することになります。
Win32 APIのShowWindow関数
というわけで、オブジェクト(コントロール)の表示・非表示を指定でできる Win32 APIのShowWindow関数をHSPから利用してみることにましょう。この 関数は、あくまで見た目の切り替えなので、表示が隠れてもオブジェクトの状態や内容が維持されます。
ShowWindow関数はシステムの「user32.dll」に含まれてるので、関数の宣言が含まれてる「user32.as」 をインクルードしときます。
ShowWindow関数の第1パラメータは、表示の切り替え対象となるオブジェクトのウィンドウハンドル値を指定します。 オブジェクトのウィンドウハンドルはHSPのobjinfo関数(タイプ2)を利用して取得しておきます。第2パラメータは 状態の指定です。0が非表示状態、5が(再)表示状態への切り替えとなります。
#include "user32.as" pos 100, 100 chkbox "ちぇっく", a hChkbox = objinfo(stat, 2) ; ウィンドウハンドル取得 button "切り替え", *change1 pos 200, 100 combox b, 100, "オブジェクト\n非表示\n消す" hCombox = objinfo(stat, 2) ; ウィンドウハンドル取得 button "切り替え", *change2 stop *change1 if check1 { ShowWindow hChkbox, 5 } else { ShowWindow hChkbox, 0 } ; 0 or 1 のスイッチ処理 check1 ^ 1 stop *change2 if check2 { ShowWindow hCombox, 5 } else { ShowWindow hCombox, 0 } check2 ^ 1 stop
☆ obj.asモジュール
HSP3にあらかじめ用意されてるモジュールファイル(common\obj.as)です。標準命令には存在しないオブジェクトに関連する命令がいくつか用意されてます。
- getobjsize命令 ... オブジェクトの表示位置や表示サイズを取得する命令。基点はクライアントエリア部分。
⇒ GetWindowRect関数 - resizeobj命令 ... オブジェクト設置後に、オブジェクトの表示位置や表示サイズを変更する命令。
(pos命令とobjsize命令はオブジェクトを設置する前の段階でしか機能しない)
⇒ MoveWindow関数 - objgray命令 ... ユーザーがオブジェクトを利用(操作)できないようグレー表示・無効化する命令。
⇒ EnableWindow関数
それぞれモジュール内でWin32 API関数を呼んで実現してます。利用するには「obj.as」をインクルードします。命令の説明はモジュール内を参照、それを利用した付属サンプルは「sample\new\winobj.html」です。(HSP 3.2〜では「sample\misc\winobj.html」)
ちなみに、HSP 3.2以降ではobjenable命令という標準命令が新規にサポートされます。これはモジュールの objgray命令とまったく同じ処理です。
(おまけ)自ウィンドウの非表示
ついでに、HSPで用意できるウィンドウの非表示は、screen命令・bgscr命令の第4パラメータや、gsel命令で
制御できます。
コンパイル済み実行ファイルの時点でウィンドウを非表示状態で起動するには、実行ファイル自動作成
の#packopt命令(hideパラメータ)があります。(旧式のEXEファイル作成なら、[特殊な設定]→[起動時にメインウィンドゥを非表示にする]を)
キーワード 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書籍本