HSP命令講座 <objinfo関数>

Last Update : 2006/11/xx

PR 話題のPCゲームをチェック!

objinfo関数 (HSP3.x)

 HSPでは、おなじみの「オブジェクトID」。HSPのスクリプト上でオブジェクト(button命令chkbox命令mesbox命令input命令combox命令listbox命令)やWin32コントロール(winobj命令、axobj命令)を設置するごとに、0から順番に割り振られていく数値です。
 この数値は、オブジェクトの状態や内容を変更するobjprm命令、オブジェクトを削除するclrobj命令、特定のオブジェクトにフォーカスを移動するobjsel命令で利用することになります。

 で、このオブジェクトIDというのは、あくまでHSP(HSP3)が特別に用意してくれてる数値です。実際のWindowsプログラミングには、「ウィンドウハンドル」という内部識別番号のようなものがオブジェクト(コントロール)を設置するたびに割り振られています。

 objinfo(オブジェクトID, 2)

 このウィンドウハンドルの値を取得するために用意されてるのがHSPの標準関数であるobjinfo関数です。命令名の由来は、「object information」から。第1パラメータにHSPのオブジェクトID、第2パラメータの取得タイプに「2」を指定します。第2パラメータには他にもタイプが用意されてますが、通常利用することはないので無視してください。

 objinfo関数は基本的にHSPの初心者さんが意識しておくべきものではありません。

↑TOP↑

サンプルコード (オブジェクトIDとウィンドウハンドルの値の表示)

 HSPで設置したオブジェクトの「オブジェクトID」と「ウィンドウハンドル」の数値を表示するサンプルです。

 オブジェクト設置命令を呼び出した直後のシステム変数statには、オブジェクトIDの値が代入されてます。これをobjinfo関数の第1パラメータに直接指定します。ついでに、ウィンドウハンドル値を変数に代入しておくのもいいでしょう。必ず0から始まるオブジェクトIDと違って、ウィンドウハンドルの値はプログラムを起動するたびに変動します。

//	オブジェクトIDの値を表示

	input b
		mes "オブジェクトID: "+stat

	chkbox "HSP〜", a
		mes "オブジェクトID: "+stat

	chkbox "objinfo〜", b
		mes "オブジェクトID: "+stat
//	ウィンドウハンドルの値を表示

	input b
		mes "ウィンドウハンドル: "+objinfo(stat, 2)

	chkbox "HSP〜", a
	hChkbox.0 = objinfo(stat, 2)
		mes "ウィンドウハンドル: "+hChkbox.0

	chkbox "objinfo〜", b
	hChkbox.1 = objinfo(stat, 2)
		mes "ウィンドウハンドル: "+hChkbox.1

 この数値を取得して何に使うのかというと、設置したオブジェクト(Win32コントロール)の制御を行うsendmsg命令(SendMessage関数)の第1パラメータに指定します。あるいは、Win32 API関数を利用する時にも使います。このサイトのHSP3 あれこれ (オブジェクト編)のページでは、objinfo関数をどんどん使うことになります。

↑TOP↑

objinfo_hwnd関数

 オブジェクトのウィンドウハンドル値を取得する関数として、objinfo_hwnd関数が別に用意されていますが、これはobjinfo関数と処理内容は同じです。「hspdef.as」ファイル内でマクロ定義されてるもので、コンパイル時にobjinfo関数のタイプ2に置き換えられます。

 objinfo_hwnd(オブジェクトID)

	combox a, , "HSP\n講座\nobjinfo\n関数"

	mes "ウィンドウハンドル: "+objinfo(stat, 2)
	mes "ウィンドウハンドル: "+objinfo_hwnd(stat)

↑TOP↑

〜HSP3 あれこれ〜
ウィンドウ | オブジェクト | ファイル | フォルダ | キーボード | マウス | メニュー | システム | 文字列 | COM | その他

Copyright © 2005-2011 ゲーム作成ソフトHSPの情報をいろいろと Let's HSP!. All rights reserved.