実際に確認できる環境に無いので 上手く行くか分かりませんが、
画面のサイズとマウスの座標から表示領域を絞り込む事は出来るかもしれません。
と言っても ginfo 0 と 1 で取得出来るスクリーン系座標でさえ
モニターの実画面の上での座標だった場合にはこの方法も使えませんが。
考え方は、仮想デスクトップ(のような物)内でやっている
どの場所を表示しているかと言う処理を、改めて自分で書き
どこを表示しているかを推測してみようと言う物です。
説明がしにくいので、
イメージ出来そうなサンプルを書いてみました。
実行するとマウスが中心になるように枠を表示しますので、
マウスを動かしてみてください。
wsizex = 640, 1 // 枠のウィンドウサイズを入れる変数
wsizey = 480, 1 // 〃
wposx = limit(GINFO_MX - wsizex/2, 0, GINFO_DISPX) // 枠の表示位置を入れる変数
wposy = limit(GINFO_MY - wsizey/2, 0, GINFO_DISPY) // 〃
// ウィンドウを4つ使って確認用の枠を作成
repeat 4
bgscr cnt+1, wsizex(cnt/2), wsizey((3-cnt)/2), 3
palette 0, 255, 0, 0, 1 :palcolor :boxf // 赤色にする
loop
gosub *REWAKU // 枠線の更新
*MAIN
// 現在のスクリーン系マウス座標と、比較用の前回の座標を格納
smousex2 = smousex
smousey2 = smousey
smousex = GINFO_MX
smousey = GINFO_MY
// マウスが移動したら
if smousex ! smousex2 | smousey ! smousey2 {
// 枠の位置の更新が必要かどうか
if smousex < wposx :wposx = smousex :gosub *REWAKU
if smousey < wposy :wposy = smousey :gosub *REWAKU
if smousex >= wposx + wsizex :wposx = smousex - wsizex + 1 :gosub *REWAKU
if smousey >= wposy + wsizey :wposy = smousey - wsizey + 1 :gosub *REWAKU
}
// 状態の表示
redraw 0
color 255, 255, 255 :boxf :color :pos 0, 0
mes "枠のサイズ :" + wsizex + ", " + wsizey
mes "マウスの位置:" + smousex + ", " + smousey
mes "枠の左上座標:" + wposy + ", " + wposx
mes "枠の右下座標:" + (wposx + wsizex) + ", " + (wposy + wsizey)
redraw 1
wait 10
goto *MAIN
*REWAKU
// 枠の表示の更新
gsel 1, 2 :width ,, wposx, wposy
gsel 2, 2 :width ,, wposx, wposy + wsizey - 1
gsel 3, 2 :width ,, wposx, wposy
gsel 4, 2 :width ,, wposx + wsizex - 1, wposy
gsel 0
return
赤枠で囲まれた部分がモニターの実画面のつもりです。
wsizex, wsizey の0要素目がそのサイズを設定している部分ですが
そこをモニター解像度と同じ 1024, 600 にして試して見て下さい
上手く行けば画面の四隅を何回かつつけば、
ある程度正確な値が出せると思います。
また四隅を触るのが面倒なら、処理の始めに、
変数 wposx, wposy(枠の位置が入っている)とマウス座標 X, Y を
予め0に設定し、常に 0, 0 から始まるようにしておけば、
四隅を触らなくてもそれなりの値が出せると思います。
ただ、この方法は表示位置を取得するのではなく推測しているだけなので、
たとえ上手く行ったとしても微妙に結果がずれる可能性が有ります。
赤色の枠線は動作を分かり易くするために描いているだけなので
実際に使う場合は枠線に関する処理は必要有りません。
もしやりたい事と違ったり、
上手くいかなかったりした場合はスルーして下さい。
#本当は oncmd を使ったメッセージ処理にしようと思ったのですが、
#スクリーン全体でマウスの移動を感知する方法が分からなかったので
#非効率ながら常にループを回しながらの処理になってます。