//API等でそういう方法があるのかもしれませんが見つからなかったので・・・
初めにアイテム数を元にobjsizeしてからlistbox作るのはどうでしょうか?
リストボックスを作った後にアイテム数が変わるのなら
MoveWindowでリストボックスのサイズを変えてしまうか、
//listbox+MoveWindowテスト
#uselib "user32.dll"
#func MoveWindow "MoveWindow" int,int,int,int,int,int
randomize
list = "ABC\nDEF\nGHI\nJK\nLMN\nOPQR\nSTU\nVW\nXYZ"
listbox select,100,list
hlist = objinfo_hwnd(0) //ハンドルを取得する
pos 0,400
button "サイズ変更",*size
button "移動",*move
stop
*size
xsize = rnd(100)+50 : ysize = rnd(150)+50
MoveWindow hlist,x,y,xsize,ysize,1
stop
*move //おまけw
x = rnd(400) : y = rnd(200)
MoveWindow hlist,x,y,xsize,ysize,1
stop
アイテム数とマウス座標から
空欄でクリックしたかどうかチェックするという手もあります
//リストボックス上ではmousex,mouseyが取得できないので・・・
#uselib "user32.dll"
#func GetCursorPos "GetCursorPos" int
#func ScreenToClient "ScreenToClient" int,int
dim point,2
repeat
GetCursorPos varptr(point) //カーソルの画面上の座標取得
ScreenToClient hwnd,varptr(point) //クライアント(ウィンドウ)座標に変換
mes ""+point(0)+" "+point(1)
wait 25
loop