setactivehidemaru と window 表示・非表No.06020
Makkie さん 09/01/10 18:51
 
window をアイコン化し、openfile で他の秀丸に制御を渡し、
setactivehidemaru で最初の秀丸に戻ると、最初の秀丸のアイコン
化が解消され、windowが表示されてしまいました。アイコン化した
ままの状態で最初の秀丸に戻る手段はないのでしょうか。
  最初の秀丸(アイコン化して実行したい)
  他の秀丸(見えない秀丸)
の二つを短時間間隔で行ったり来たりする処理をしていて、
この処理が全体として長い時間かかるので、この間に別の作業を
したいのですが、windowがパタパタと表示されてしまうので、
落ち着いて別の作業ができない感じになります。

秀丸エディタ7.07です。よろしくお願いします。

よろしくお願いします。


[ ]
RE:06020 setactivehidemaruと window表示No.06021
h-tom さん 09/01/10 19:42
 

h-tom です。

>window をアイコン化し、openfile で他の秀丸に制御を渡し、
>setactivehidemaru で最初の秀丸に戻ると、最初の秀丸のアイコン
>化が解消され、windowが表示されてしまいました。アイコン化した
>ままの状態で最初の秀丸に戻る手段はないのでしょうか。

nexthidemaruicon、prevhidemaruicon を使ってみてはどうでしょう?
3つ以上の秀丸エディタがいる場合、「最初の秀丸」かどうかの判定が、
必要ですが。

[ ]
RE:06020 setactivehidemaru と window 表No.06022
Iranoan さん 09/01/10 21:14
 
 Makkie さん今日は、Iranoan です。
> window をアイコン化し、openfile で他の秀丸に制御を渡し、
<snip>
> この処理が全体として長い時間かかるので、この間に別の作業を
> したいのですが、windowがパタパタと表示されてしまうので、
 そもそも、そのウィンドウを非表示にすれば良いのでは?
・起動オプションで h オプションを使う
・showwindow 0;
の 2 つの方法が有ります。

[ ]
RE:06020 setactivehidemaru と window 表No.06023
山紫水明 さん 09/01/10 21:26
 
 Makkieさん,

 外してなければいいのですが・・・。
 アイコン化よりもむしろ非表示にすれば完全に画面の動きは押さえられると思
います。
 次のマクロは一つのサンプルです。「作業」の部分を書きかえればいいでしょ
う。アイコン化がよければ,showwindow 2 を使えばいいでしょう。
 対象となる二つのファイルを開いて実行します。
//----------------------------------------//
//前処理
#handle1 = hidemaruhandle(0);
#handle2 = hidemaruhandle(1);
showwindow 0;
setactivehidemaru #handle2;
showwindow 0;
setactivehidemaru #handle1;
//作業
#i = 1;
while( #i < 100 ){
    insert str( #i );
    setactivehidemaru #handle2;
    insert str( #i );
    setactivehidemaru #handle1;
    #i = #i + 1;
}
//後処理
setactivehidemaru #handle1;
showwindow 1;
setactivehidemaru #handle2;
showwindow 1;
endmacro;
//------------------------------------------//

     では, (^^)/~
                                    山紫水明(ユーザー)
                                    SANSHISUIMEI

[ ]
RE:06021 setactivehidemaruと window表示No.06024
Makkie さん 09/01/10 21:52
 
h-tom さん

えっ、と思ってやってみましたが、nexthidemaruicon でも、制御が
渡るとアイコン化が解消され、ウィンドーが表示されました。

>nexthidemaruicon、prevhidemaruicon を使ってみてはどうでしょう?
>3つ以上の秀丸エディタがいる場合、「最初の秀丸」かどうかの判定が、
>必要ですが。

[ ]
RE:06023 setactivehidemaru と window 表No.06025
Makkie さん 09/01/10 22:04
 
山紫水明さん、Iranoanさん

コメントありがとうございます。

非表示にすればよいのは分かるのですが、そもそもアイコン化で実行
したかったのは、title 文を使って、長時間かかる処理の簡単な経過
状況をアイコンに表示できるからでした。コメントを伺っていると、
どうも非表示にするしかないみたいなので、それでやります。

しかし、showwindow 2 で明示的にアイコン化されている秀丸に制御
を渡すと、showwindow 2の宣言が無視されてウィンドーが表示される
というのも、随分と違和感のある仕様です(バグかな?)。

ありがとうございました。


> Makkieさん,
>
> 外してなければいいのですが・・・。
> アイコン化よりもむしろ非表示にすれば完全に画面の動きは押さえられると思
>います。
> 次のマクロは一つのサンプルです。「作業」の部分を書きかえればいいでしょ
>う。アイコン化がよければ,showwindow 2 を使えばいいでしょう。
> 対象となる二つのファイルを開いて実行します。
>//----------------------------------------//
>//前処理
>#handle1 = hidemaruhandle(0);
>#handle2 = hidemaruhandle(1);
>showwindow 0;
>setactivehidemaru #handle2;
>showwindow 0;
>setactivehidemaru #handle1;
>//作業
>#i = 1;
>while( #i < 100 ){
>    insert str( #i );
>    setactivehidemaru #handle2;
>    insert str( #i );
>    setactivehidemaru #handle1;
>    #i = #i + 1;
>}
>//後処理
>setactivehidemaru #handle1;
>showwindow 1;
>setactivehidemaru #handle2;
>showwindow 1;
>endmacro;
>//------------------------------------------//
>
>     では, (^^)/~
>                                    山紫水明(ユーザー)
>                                    SANSHISUIMEI

[ ]
RE:06024 setactivehidemaruと window表示No.06026
h-tom さん 09/01/10 22:28
 

h-tom です。

>えっ、と思ってやってみましたが、nexthidemaruicon でも、制御が
>渡るとアイコン化が解消され、ウィンドーが表示されました。
最後につけたマクロで試してみましたが、メッセージが表示されても、
マクロを実行した秀丸エディタは、最小化したままですよ。

秀丸エディタ:Ver.7.10
OS:Windows Vista

#main = hidemaruhandle(0);
showwindow 2;
//newfile;
//showwindow 0;
openfile "/h";
#sub = hidemaruhandle(0);
prevhidemaruicon;
if(#main == hidemaruhandle(0)){
        message "マクロを実行した秀丸エディタに戻りました。\n" +
                "非表示の新規ファイルを閉じます。";
        closehidemaruforced #sub;
}
endmacro;

[ ]
RE:06026 setactivehidemaruと window表示No.06027
Makkie さん 09/01/11 12:00
 
Makkie です

ふたたび、えっ、と思って、h-tomさんのご提示のマクロを実行し
てみたところ、全くおしゃるとおりでした。
私のnext/prevhidemaruiconのテストにミスがあったようです。

setactivehidemaru と next/prevhidemaruicon では、ウィンドー
表示の仕様が違うようですね。制御をやりとりしたい2つの秀丸
以外の秀丸がいる時にはnext/prevhidemaruicon で#mainにどう
やってもどるかが問題ですが、何とかなるでしょう。

  (それにしてもなぜウィンドー表示の仕様が違うのか、変だな?)

サンプルマクロまで作っていただいて、感謝いたします。
大変ありがとうございました。

>
>h-tom です。
>
>最後につけたマクロで試してみましたが、メッセージが表示されても、
>マクロを実行した秀丸エディタは、最小化したままですよ。
>
>秀丸エディタ:Ver.7.10
>OS:Windows Vista
>
>#main = hidemaruhandle(0);
>showwindow 2;
>//newfile;
>//showwindow 0;
>openfile "/h";
>#sub = hidemaruhandle(0);
>prevhidemaruicon;
>if(#main == hidemaruhandle(0)){
>        message "マクロを実行した秀丸エディタに戻りました。\n" +
>                "非表示の新規ファイルを閉じます。";
>        closehidemaruforced #sub;
>}
>endmacro;

[ ]
RE:06025 setactivehidemaru と window 表No.06028
アルビレオ さん 09/01/13 11:43
 
ユーザーのアルビレオです。

本題とはちょっとずれますが
>しかし、showwindow 2 で明示的にアイコン化されている秀丸に制御
>を渡すと、showwindow 2の宣言が無視されてウィンドーが表示される
>というのも、随分と違和感のある仕様です(バグかな?)。
に関して。

ヘルプではshowwindowについて
>秀丸エディタは指定された値をそのままWindows-APIのShowWindowに渡します。
と書かれているように、ウィンドウの状態(最大化/最小化)を管理しているのは
あくまでOSで、秀丸エディタ側では何もしていないようです。

Makkieさんとしては違和感があるのでしょうが「明示的に指定すれば動作が違
う」というのはわざわざ「明示的な指定だったかどうか」を記録する必要がある
わけで、特にそのような処理を用意しない限りは同じ扱いになる方が自然だと私
は思います。
まあ部外者の個人的意見に過ぎないんですけどね。

[ ]