HSP3がサポートしてるoncmd命令を使うと、ユーザーによるオブジェクトの細かい挙動イベントを取得できます。
HSP標準対応のリストボックス(listbox命令)&combox(コンボボックス命令)を例に~。たとえば、

- 項目の選択
(通常クリック、リストボックスの場合はダブルクリックも)
- フォーカスの移動
- コンボボックスのリストのドロップダウン
みたいなことが行われると、WM_COMMANDメッセージというのが通知されます。oncmd命令はこのメッセージが通知されたときのラベルジャンプ先をあらかじめ指定しておきます。
ジャンプ先では、システム変数lparamにイベントが行ったオブジェクトのウィンドウハンドル、wparamの上位ワードに通知コードが返ります。(飛び先ではサブルーチン処理として必ずreturnさせる)
ジャンプ先では、システム変数lparamにイベントが行ったオブジェクトのウィンドウハンドル、wparamの上位ワードに通知コードが返ります。(飛び先ではサブルーチン処理として必ずreturnさせる)
通知コードは、Delphi言語向けのサイトですがHalbowさんとこを参照。リストボックス「LBN_~」が5コほど、コンボボックス「CBN_~」が10コほどあります。(実際にはその内の一部の通知コードが返ってくる)
// 通知コードを表示するテストスクリプト (by 無題な濃いログ)
// (どんどんイベントを起こすとウィンドウサイズが足りんのでlogmes命令あたりを)
#define ctype HIWORD(%1) (%1 >> 16 & $FFFF)
#define WM_COMMAND $111
oncmd gosub *command, WM_COMMAND
objsize 100
listbox value, 50, "HSP\nlistbox\nWM_COMMAND"
hListbox = objinfo(stat, 2)
combox value, 100, "HSP\ncombox\nWM_COMMAND"
hCombox = objinfo(stat, 2)
pos 150, 0
stop
*command
if lparam = hListbox {
mes "L " + ""+HIWORD(wparam)
return
}
if lparam = hCombox {
mes "C " + ""+HIWORD(wparam)
return
}
return