ll_libload user, "user32.dll"
ll_getproc ScreenToClient, "ScreenToClient", user
#module
#deffunc getmousepos val, int
mref mp, 16 : mref xy, 1
mref bmscr, 67
ginfo 0
i = prmx, prmy
ll_getptr i : ll_ret ptr
prm = bmscr.13, ptr
ll_callfunc prm, 2, ScreenToClient@
mp = (xy ! 0)
mp = i.mp
return
#deffunc getpushedindex val, int, int
mref rint, 16 : mref id, 1 : mref type, 2
getmousepos mx, 0
getmousepos my, 1
i = (my << 16) + mx
objsend id, 0x00D7, , i, 1
rint = stat >> ((type ! 0) * 16) & 0xFFFF
return
#global
sdim buf, 256
buf = "EM_CHARFROMPOSは指定座標に最も近いインデクスを返します\n\n"
buf + = "このサンプルは、クリック座標の行番号及び文字インデクスを取得します。\n"
buf += "エディットボックス上でのマウス座標はgetmouseposモジュール命令を使いましょう。"
objmode 2
mesbox buf, winx, winy
repeat
wait 5
stick key, 256
if key & 256 : gosub *click
loop
*click
getpushedindex i.0, 0, 0
getpushedindex i.1, 0, 1
if i ! 0xFFFF {
title "行:" + i.1 + " インデクス:" + i
} else {
title "範囲外です"
}
return
|