sendmsg命令 Tips集

Last Update : 2007/04/xx

ウィンドウ関連 | ボタン・チェックボックス | 入力ボックス・メッセージボックス | リストボックス・コンボボックス

sendmsg命令 (HSP 3.x)

 HSP3(HSP 3.x)の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〜 ]

↑TOP↑

4つのパラメータ

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

//	SendMessage関数

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

	sendmsg p1, p2, p3, p4

[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向けにウィンドウメッセージの一部の解説が載ってます。Win32コントロールのプログレスバー、リストビュー、ツリービュー、アップダウンコントロール、ステータスバー、トラックバー、ツールチップなどにもあります。基本的にメッセージIDの名前をキーワードに検索すると、日本語の解説サイトがヒットすることが多いですが、英語の資料しかないものもあります。

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

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

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

↑TOP↑


日本最大のYahoo!オークションで掘り出しものを探しちゃお! (100スタート)円

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

Copyright © 2005-2012 . All rights reserved.