DisableDraw + enabledraw #nNo.08552
ひろ さん 03/03/24 18:37
 
 秀まるおさん今日は、ひろです。
 DisableDraw を使用すると、DisableDraw を実行したときのカーソル位置に
よって enabledraw が上手く動作しません。
//-------------------------------------------------------------------
if(browsemode)browsemodeswitch;
disabledraw;
goscreenend;
up 3;
#x = x;
#y = y;
goscreentop;
#top = y;
loaddll "tkinfo.dll";
#tmp = dllfunc("DisableDraw", 1);
moveto #x, #y;
enabledraw #top;
#tmp = dllfunc("EnableDraw");
freedll;
//-------------------------------------------------------------------
がサンプルマクロです。これは仕様でしょうか? 因みに、
//-------------------------------------------------------------------
loaddll "tkinfo.dll";
#tmp = dllfunc("DisableDraw", 1);
if(browsemode)browsemodeswitch;
disabledraw;
goscreenend;
up 3;
#x = x;
#y = y;
goscreentop;
#top = y;
moveto #x, #y;
enabledraw #top;
#tmp = dllfunc("EnableDraw");
freedll;
//-------------------------------------------------------------------

//-------------------------------------------------------------------
if(browsemode)browsemodeswitch;
disabledraw;
goscreenend;
up 3;
#x = x;
#y = y;
goscreentop;
#top = y;
moveto #x, #y;
loaddll "tkinfo.dll";
#tmp = dllfunc("DisableDraw", 1);
#tmp = dllfunc("EnableDraw");
enabledraw #top;
freedll;
//-------------------------------------------------------------------
とすると、マクロ起動時のカーソル位置によって動作が変わります。
 こちらの環境は、Windows98+IE6.0+鶴亀 Ver.2.57 です。

[ ]
RE:08552 DisableDraw + enabledraw #nNo.08586
秀まるお さん 03/03/27 16:39
 
 まだ詳しく調べてませんが、tkinfo.dllのEnableDraw/DisbaleDrawでは、内部
的に秀丸エディタのenabledraw/disabledraw相当の処理もしています。なので、
EnableDraw/DisableDrawとenabledraw/disabledrawを混ぜて使った場合にどうな
るかは、予測困難です。具体的にはソースコードをトレースしてみないと分かり
ません。

 そのような調査をするのが面倒なので、そもそもこれらを混ぜて使うことはや
めていただく=仕様ということで終わって欲しいです。

 秀丸エディタのenabledrawでのパラメータ相当のことをしたいとか、何か具体
的な要望があれば対応できるかもしれません。

[ ]
RE:08586 DisableDraw + enabledraw #nNo.08593
ひろ さん 03/03/27 18:11
 
 秀まるおさん今日は、ひろです。
>  秀丸エディタのenabledrawでのパラメータ相当のことをしたい
 まさにこれです。

 マクロでメールやフォルダを行ったり来たりする処理をしているのですが、
出来るだけマクロ開始時のアクティブ・フォルダ/メール、本文の表示状態を
元に戻したいのです。

 基本的には、
>  そのような調査をするのが面倒なので、そもそもこれらを混ぜて使うことはや
> めていただく=仕様ということで終わって欲しいです。
に了解しました。ただマクロ・ヘルプに追記は必要ないでしょうか?
 ##こんな処理を書くのは私を含め相当マニアックなので、態々書く必要も無
いかなあ〜。

[ ]
RE:08593 DisableDraw + enabledraw #nNo.08594
秀まるお さん 03/03/28 10:27
 
 では、EnableDraw2関数を追加します。EnableDraw2関数は、秀丸のenabledraw
関数と同じくパラメータで画面先頭行が指定できます。

   #n = dllfunc("EnableDraw2", -9999)  とすると、メール先頭、
   #n = dllfunc("EnableDraw2", 0)      とすると、メール本文先頭

 となります。

[ ]
RE:08594 DisableDraw + enabledraw #nNo.08598
ひろ さん 03/03/28 12:08
 
 秀まるおさん今日は、ひろです。
>    #n = dllfunc("EnableDraw2", -9999)  とすると、メール先頭、
>    #n = dllfunc("EnableDraw2", 0)      とすると、メール本文先頭
 有り難うございました。

[ ]