|
>movetoを2回やると、1回目のmovetoは前のカーソル位置を設定することになる
>ので、それで応用できるかもしれません。
>マクロ実行時にprevposをしてからxとyを記憶し、処理をして、復元するときに
>movetoで覚えていたxとyに移動し、もう一度movetoで移動すべきところに移動す
>ると、できるかもしれないです。試していないですが。
あ、それなら既にあって、
// template.mac
// ここに動作の説明を書く
call pushscrposition;
// ここにうまくいったらresult=1を返すコマンドを書く
call popscrposition result;
endmacro;
// カーソル位置を保存
pushposition:
#push_x = x; #push_y = y;
#push_scr_y = -1;
return;
// カーソル位置を復帰
popposition:
moveto #push_x, #push_y;
return;
// 前の位置と画面先頭位置も保存、描画禁止
pushscrposition:
call pushposition;
disabledraw;
prevpos;
#push_prev_x = x; #push_prev_y = y;
prevpos;
goscreentop;
#push_scr_y = y;
prevpos;
return;
// 前の位置と画面先頭行を復帰、描画許可 (##1=1でマクロ実行前のカーソル位置に
戻る。)
popscrposition:
if (##1) call popposition;
moveto #push_prev_x, #push_prev_y;
prevpos;
if (##1||#push_scr_y<0)
enabledraw;
else
enabledraw #push_scr_y;
return;
こんなふうにすれば、前の位置をちゃんと戻せます。
要は // ここにうまくいったらresult=1を返すコマンドを書く
が1行とかだと、本業よりも長すぎるなぁと思ったので、
1行で待避できるコマンドが欲しいなぁ、と思っただけのことです。
現状でも出来ることは出来ます。(^_^;)
|
|