HSP命令講座 <oncmd命令>

Last Update : 2008/02/xx

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

oncmd命令 (ウィンドウメッセージが通知された際の割り込み指定)

 指定したウィンドウメッセージがWindowsから通知された際のラベルジャンプ先を指定しておく命令です。命令名の由来は、「on command」から。

 oncmd gosub *ラベル, ウィンドウメッセージ

 この命令はHSP3からサポートしたもので、基本的にWin32プログラミングがらみの処理で利用することを想定してます。ウィンドウメッセージについては、Google検索してみてください。

 ウィンドウメッセージというのはHSPにない概念ですが、実はHSP2時代からサポートしてるonkey命令(WM_KEYDOWNメッセージ)、onclick命令(WM_LBUTTONDOWN・WM_RBUTTONDOWNメッセージ)、onexit命令(WM_DESTROYメッセージ)は、まさにウィンドウメッセージの割り込みを処理するために用意されている命令です。また、button命令(WM_COMMANDメッセージ)もウィンドウメッセージの処理を行ってます。

 ちなみに、oncmd命令は必ずサブルーチンジャンプ処理(「oncmd gosub」〜return命令)のモードで利用してください。通常のラベルジャンプ処理(「oncmd goto」〜stop命令)で利用するシーンはまずないと考えてください。

↑TOP↑

ウィンドウメッセージ

 たとえば、「WM_KEYDOWN」メッセージ(0x0100)は、キーボードのキーが「押し下げ」られた時にWindowsから通知されます。つまり、現在押されているキーが分かります。HSPではこれをonkey命令として提供してました。

//	onkey命令

	onkey gosub *jump

	stop

*jump
	mes ""+strf("%c", wparam)
	return
//	WM_KEYDOWNメッセージ

#define WM_KEYDOWN $100

	oncmd gosub *jump, WM_KEYDOWN

	stop

*jump
	mes ""+strf("%c", wparam)
	return

 逆に「WM_KEYUP」メッセージ(0x0101)というのも存在し、これはキーボードのキーが「押し上げ」られた時にWindowsから通知されます。つまり、直後まで押されていたキーが分かります。HSPの標準命令では取得できない処理です。

#define WM_KEYUP $101

	oncmd gosub *jump, WM_KEYUP

	stop

*jump
	mes ""+strf("%c", wparam)
	return

 このように今までは、キーボードの押し下げ、マウスクリックボタンの押し下げ、プログラムの終了の3処理分しか用意されていなかったものが、oncmd命令により任意のウィンドウメッセージを取得できるようになりました。

 ついでに、ボタンオブジェクト。oncmd命令の通知の後に通常のbutton命令のジャンプ処理が行われます。

#define WM_COMMAND $111

	oncmd gosub *jump_oncmd, WM_COMMAND

	button gosub "ボタン", *jump_button

	stop

*jump_button
	dialog "button命令 の通知"
	return

*jump_oncmd
	dialog "oncmd命令 の通知"
	return

 ↓HSP3 あれこれのページに登場するサンプルでは、このoncmd命令を当然のごとく登場します。

↑TOP↑

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

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