|
別のフォルダに移動し、色々と処理をした後に、現在のフォルダに戻るマクロを
「受信が一段落した時」に登録しています。
この時、現在表示中のメールのスクロール位置を復元したく、以下の様なマクロ
としていますが、これだとスクロールされる様子が見えてしまい困っています。
見えない様にしようと「DisableDraw」を使おうと思いましたが、正しくスクロール
しませんでした。秀丸エディタのマクロヘルプに
disabledraw中は、〜略〜 正しいスクロール量でスクロールしません。
と書いてありました。
また、「EnableDraw2」にパラメータを与えてみましたが、これもうまく動きません
でした。
(どのような数字を設定しても、メールの先頭から表示される。)
// 現在のスクロール位置
#lineno = screentopy;
#n = dllfunc("DisableDraw", 1);
〜略〜
#n = dllfunc("EnableDraw2", #lineno);
//
//// 元のスクロール位置に戻す
//#i = 0;
//while (#i < #lineno) {
// rollup;
// #i = #i + 1;
//}
そこで質問ですが、スクロールする様子を見えない様にスクロール位置を復元するには
どのようにしたら良いでしょうか?
---------------------------------
Windwos XP Home Edition
秀丸メール Ver.5.72beta26
ヘッダ部分をスクロールしない:ON
=======================================================================
loaddll "TKInfo.dll";
$TARGET_ACCOUNT = "TEST";
$TARGET_FOLDER = "草稿";
// 現在のスクロール位置
#lineno = screentopy;
// 現在の状態を保存
$current_account = dllfuncstr("CurrentAccount");
$current_folder = dllfuncstr("CurrentFolder");
#is_thread_view = dllfunc("IsThreadView");
if (#is_thread_view) #n = dllfunc("SetThreadView", 0);
#mail_index = dllfunc("MailIndex");
// 対象フォルダをアクティブにする
#n = dllfunc("SelectFolder", $TARGET_ACCOUNT, $TARGET_FOLDER);
// 保存した状態に戻す
#n = dllfunc("SelectFolder", $current_account, $current_folder);
#n = dllfunc("SetMailIndex", #mail_index);
if (#is_thread_view) #n = dllfunc("SetThreadView", #is_thread_view);
// 元のスクロール位置に戻す
#i = 0;
while (#i < #lineno) {
rollup;
#i = #i + 1;
}
freedll;
endmacro;
=======================================================================
|
|