sendmsg命令 チップ集

Last Update : 2007/04/xx

ウィンドウ関連 || オブジェクト関連1 || オブジェクト関連2

sendmsg命令 (HSP 3.x)

 HSP3(HSP 3.x)のsendmsg命令の情報と、雑多なサンプルスクリプトを掲載してます。

 sendmsg命令は、内部でWin32 API関数のSendMessage関数を呼んでます。命令名の由来は、この関数名から来てるわけです。そのまま名前のごとく「Message」(メッセージ)を「Send」(送信)する処理を行います。

 ちなみに、HSP2(HSP 2.x)では同様の処理を行うobjsend命令が用意されていました(→ HSP 2.xのobjsend命令)。HSP3では単なる命令名の変更だけではなく、第1パラメータ(p1)の部分に仕様の変更があります。ちなみに、第5パラメータ(p5)は存在しません(HSP3.1のヘルプブラウザの説明は単なる誤記)。

命令 p1 p2 p3 p4 p5
HSP3
sendmsg
ウィンドウハンドル [ hwnd ] メッセージID
[WM_〜 など]
wParam lParam なし
オブジェクトのウィンドウハンドル
[ objinfo(オブジェクトID, 2) ]
HSP2
objsend
ウィンドウID [ -28 ] メッセージID
[WM_〜 など]
wParam lParam p4のタイプ
オブジェクトID [ 0〜 ]

^

4つのパラメータ

 HSP3のsendmsg命令には、4つのパラメータ(引数)が存在します。これはWin32 API関数のSendMessage関数のパラメータとまったく同じです。

//	Win32 API SendMessage関数

LRESULT SendMessage(
  HWND hWnd,      // 送信先ウィンドウのハンドル
  UINT Msg,       // メッセージ
  WPARAM wParam,  // メッセージの最初のパラメータ
  LPARAM lParam   // メッセージの 2 番目のパラメータ
);
//	HSP3 sendmsg命令

sendmsg p1, p2, p3, p3

[1] 第1パラメータ
 メッセージを送信する対象となる(1)ウィンドウのハンドル値、または(2)オブジェクトのウィンドウハンドル値を指定します。
 HSPには、screen命令やbgscr命令に「ウィンドウID」、各種オブジェクトに「オブジェクトID」というものがあります。この数値はスクリプトから呼び出した順に0から始まりますが、あくまでHSPが特別に用意してくれてるものです。
 ウィンドウハンドルという値は内部識別番号のようなもので、(1)の自ウィンドウを識別する数値「ウィンドウハンドル」はHSPのシステム変数「hwnd」で取得できます。(2)のオブジェクトを識別する数値「オブジェクトのウィンドウハンドル」はHSPのobjinfo関数で取得できます。

[2] 第2パラメータ
 上の第1パラメータで指定したウィンドウ、または各種オブジェクトに対して送信するメッセージID(数値)を指定します。このメッセージIDは、ものすご〜い数(何百個?)が用意されており、たとえばHSPが標準で対応してるオブジェクトのメッセージをMSDNのページ(英語)から拾ってみます。

オブジェクト MSDN (英語)
ボタン・チェックボックス BM_〜
入力ボックス・メッセージボックス EM_〜
リストボックス LB_〜
コンボボックス CB_〜

 また、ちょくとさんのサイトには「ウィンドウメッセージリスト」のページがあり、HSP向けにウィンドウメッセージ(の一部)の解説が掲載されてます。基本的にメッセージID名をキーワードに検索すれば、日本語の解説サイトがヒットすることが多いです。

[3] 第3パラメータ
 wParam値を指定します。「word Parameter」から。このパラメータに具体的にどのようなものを指定すべきかは、上の第2パラメータのメッセージIDごとに決められてます。

[4] 第4パラメータ
 lParam値を指定します。「long Parameter」から。このパラメータに具体的にどのようなものを指定すべきかは、上の第2パラメータのメッセージIDごとに決められてます。

○ 戻り値
 sendmsg命令を呼び出した直後のシステム変数statには、SendMessage関数の結果を返す戻り値がそのまま返ります。

^

HSP3 あれこれ | HSP3 オブジェクト | HSP 命令/関数講座

Copyright © 2005-2009 Kpan. All rights reserved.