onclickやoncmdは、各ウィンドウに対して個別に設定できるので、WM_MOUSEMOVEメッセージ(マウスが移動した)の割り込みを登録することで、マウスカーソルが移動した判定ができると思います。
ただ、ウィンドウの複数表示は、gselによるウィンドウ操作先設定をミスることなどによるバグが出やすいですし、可読性も落ちやすいので、一度本当に複数ウィンドウが必要か考えてみてください。
1つのウィンドウにまとめれるのなら、そうした方がいいです。(ただ、設定画面などのモーダルウィンドウは例外)
というか、そもそもなぜこのような処理が必要なのか気になるのですが、どういったものに使うのでしょう?
#define WM_MOUSEMOVE 0x200
#define WM_MOUSELEAVE 0x2A3
screen 0
title "0"
oncmd gosub *mouseMoveScreen0, WM_MOUSEMOVE
screen 1
title "1"
oncmd gosub *mouseMoveScreen1, WM_MOUSEMOVE
// マウスが上にあるウィンドウのID(ウィンドウ外にあるかは分からない)
windowIdHoveringMouse = ginfo_sel
stop
*mouseMoveScreen0
if (windowIdHoveringMouse != 0) {
windowIdHoveringMouse = 0
gosub *moved
}
return
*mouseMoveScreen1
if (windowIdHoveringMouse != 1) {
windowIdHoveringMouse = 1
gosub *moved
}
return
// 移動した
*moved
gsel windowIdHoveringMouse
mes "移動 " + windowIdHoveringMouse + "へ"
return