質問の意図がよく分からないのですが、こういうことでしょうか
#include "user32.as"
#define global GWL_STYLE $FFFFFFF0
#define global WM_COMMAND $00000111
#define global LBN_SELCHANGE $00000001
#define global LB_GETCURSEL $00000188
#define global LBN_DBLCLK $00000002
#define global NULL $00000000
#define global ctype HWORD(%1) ((%1) >> 16 & $FFFF)
screen 0
// リストボックスは LBS_NOTIFY をセットすると WM_COMMAND を発行する (HSPのリストボックスはデフォルトでセットされている)
oncmd gosub *COMMAND, WM_COMMAND
Listbox ListBoxA, 100, "A\nB\nC\nD"
hListBox = objinfo_hwnd(stat)
stop
*COMMAND
// リストボックス以外は無視
if (lparam != hListBox) : return
// ダブルクリックで反応するためには LBN_SELCHANGE を LBN_DBLCLK に置き換える
if (HWORD(wparam) == LBN_SELCHANGE) {
index = SendMessage(hListBox, LB_GETCURSEL, NULL, NULL)
// *COMMAND にサブルーチンジャンプで来てるので goto にしないこと (サブルーチンネストが浅くならなくなる)
if (index == 0) : gosub *ListA
if (index == 1) : gosub *ListB
if (index == 2) : gosub *ListC
if (index == 3) : gosub *ListD
}
return
// ===================================
*ListA
dialog "Aが選択されました"
return
*ListB
dialog "Bが選択されました"
return
*ListC
dialog "Cが選択されました"
return
*ListD
dialog "Dが選択されました"
return