|
調べてみたら、一応これは仕様といえば仕様ってことになりそうです。
実はトレースしてみて分かったことではあるのですが、秀丸マクロの
enabledrawで表示位置(screentopy)を指定しても、カーソルが画面の外に出て
しまう場合は指示された通りの位置にならないようでした。
例えば秀丸エディタの場合で、ある程度大きなファイルを開いてカーソルをど
こかファイルの途中に位置してる状態で、
#y = screentopy;
disabledraw;
gofiletop;
enabledraw #y;
ってマクロを実行すると、マクロ終了後に表示される位置はファイルの先頭に
なってしまいます。
秀丸マクロのSaveEditMailは、実はそれを実行するとカーソル位置がメール本
文の先頭に移動してしまいます。それのせいで、enabledrawしてもうまくカーソ
ル位置が指定された所に行ってくれないようです。
それとあと、screentopyが指定出来るのはEnableDraw2の方で、EnableDrawの
方ではパラメータ指定しても無視されるってのもありました。
総合すると、マクロとしては、
loaddll "tkinfo.dll";
#tmp = dllfunc( "DisableDraw" );
gofileend;//本来行いたいのは、ファイル末尾という訳ではないけれど
#y = dllfunc("hidemaru_screentopy");
#cursorx = x; #cursory = y;
if( !dllfunc( "BeginEditMail", 0 ) )message "編集許可失敗";
$nifty = dllfuncstr( "DeleteHeader", "From" );
#tmp = dllfunc( "SaveEditMail", 0, 0 );
moveto #cursorx, #cursory;
#tmp = dllfunc( "EnableDraw2", #y );
freedll;
のように、SaveEditMailの後にカーソル位置を復元するように直すとうまくい
くようです。
(gofileendをコメントアウトしてもうまく動きます)
本来でしたらSaveEditMailでカーソルが勝手にメール本文先頭に移動しないよ
うにすべきかと思いますが、とりあえずはマクロを上記のようにすることで回避
お願いしたいです。
あと、秀丸マクロのdisabledraw/enabledrawとSaveEditMailを組み合わせた場
合もうまくいかないようです。これは簡単に改良できるので、今から改良してみ
ます。
あと、ヘルプの方に、EnableDraw2でy座標を指定してもカーソル位置が画面外
だと指定された位置にならないこともちゃんと記述するようにします。
|
|