monitorとウィンドウ関連キーワードNo.08101
fleakflap さん 05/06/09 17:22
 
 マルチモニタ(領域が連続しているマルチ画面のタイプ)の秀丸もデスクトップ記
録ができるようになり、非常に便利になりました。
 で、monitor 1 にある秀丸を最大化させると monitor 1で最大化してくれます。と
ころが、cxscreenやcyscreen等はmonitor 0 の値のままです。当然と言えば、当然な
のですが、monitor 1 を見ている人間からはmonitor 1の値を得られた方が便利なこ
とも多いかもしれませんし、現状では、monitor 1 のこれらの値を秀丸マクロから直
接取得するするマクロ変数がないようです。

 そこで可能なら、「cxscreenやcyscreen等は実行している秀丸があるmonitorのも
ので、鍵括弧で別のmonitorの情報も取得できる」という仕様の方が使い勝手が良い
ように思われるのですが、如何でしょうか?
(厳密には、過去のマクロとの整合性の点から、上記をcxscreen2,あるいは、monito
rsxscreen…ということかも?)

 ご検討頂ければ幸いです。

[ ]
RE:08101 monitorとウィンドウ関連キーワNo.08107
秀丸担当 さん 05/06/09 19:02
 

> そこで可能なら、「cxscreenやcyscreen等は実行している秀丸があるmonitorのも
>ので、鍵括弧で別のmonitorの情報も取得できる」という仕様の方が使い勝手が良い
>ように思われるのですが、如何でしょうか?
>(厳密には、過去のマクロとの整合性の点から、上記をcxscreen2,あるいは、monito
>rsxscreen…ということかも?)

互換性を維持するため、cxscreenの仕様を変えるのはまずいかもしれません。
新しい文にするか、あるいは[]付きならば問題は無いかもしれません。
しかし、こういった要望を聞いていくときりが無くて、肥大化してしまうので、
別のDLLを用意してDLLでやったほうがいいのではないかという話もあります。

[ ]
RE:08107 monitorとウィンドウ関連キーワNo.08332
fleakflap さん 05/06/21 17:10
 
>新しい文にするか、あるいは[]付きならば問題は無いかもしれません。
 素晴らしい! 期待したいです(^^) マルチモニタでウインドウ系のコマンドがか
らむマクロを作っていると、いつもどの画面にいるとか、画素数とかを考慮しながら、
しかも環境によってこれらが異なるので、素人にはとても大変です。よろしくご検討
くださいm(_ _)m

 ちなみに「[]付き」ということは、(1)[]が無ければ現行通り、(2)[]の中のパラ
メータは「monitor」変数が入れば自然だろうと思われます。

[ ]
RE:08332 monitorとウィンドウ関連キーワNo.08356
秀丸担当 さん 05/06/22 10:07
 

> 素晴らしい! 期待したいです(^^) マルチモニタでウインドウ系のコマンドがか
>らむマクロを作っていると、いつもどの画面にいるとか、画素数とかを考慮しなが
>ら、
>しかも環境によってこれらが異なるので、素人にはとても大変です。よろしくご検討
>くださいm(_ _)m

期待されるとちょっと困るので、あまり期待されないほうがいいかと…
先のコメントでも書きましたが、こういった要望を聞き入れていくと肥大化して
しまいます。
もしDLLが作成可能な場合は作成していただいたり、鶴亀のtkinfo.dllのように
いろいろな機能を詰め込んだDLLを秀丸に添付するというのも案です。

[ ]
RE:08356 monitorとウィンドウ関連キーワNo.08384
fleakflap さん 05/06/22 14:51
 

 ご指示の通り、期待しない、ことで了解致しました(^^;

 ちなみに、秀丸担当様の所では、セカンダリモニタ上で、どのようにして秀丸
ウインドウをマクロから制御されておられるのでしょうか? こちらでは、setmonitor
でモニタ自体は切り替わるのですが(また、[縦に並べる]等もセカンダリモニタ
を認識してくれるのですが)、setwindowposなどのマクロ文で位置を制御したりする
ことが一切できないで、setwindowpos文の実行直後に強制的にプライマリモニタにウ
インドウが移動してしまい
難儀しているのですが…。(セカンダリモニタがプライマリの左側にある場合は、
setwindowposの引数が負の値になるので、当初の要望を出したのですが、プライマリ
モニタの画素数以上を指定すると、正の値でもセカンダリへは移動しないようです。
これは、ちょっとバグと言うか、マルチモニタ環境に対応できていないような気もす
るのですが…)

[ ]
RE:08384 monitorとウィンドウ関連キーワNo.08407
秀丸担当 さん 05/06/23 15:23
 

> ちなみに、秀丸担当様の所では、セカンダリモニタ上で、どのようにして秀丸
>ウインドウをマクロから制御されておられるのでしょうか? こちらでは、

基本的にサポートしていないので、どのようにするべきものでもないです。
回答としては、サポートしていないということです。

無理矢理やるとしたら、取得は
setmonitor 1;
showwindow 3;
#cx = windowcx;
#cy = windowcy;

設定はやはり
setmonitor 0;
setwindowpos #x, #y, #cx, #cy;
setmonitor 1;
という感じでしょうか。

あるいは、DLLを作成して呼び出すか、です。

[ ]
RE:08407 monitorとウィンドウ関連キーワNo.08416
fleakflap さん 05/06/25 16:46
 
 サポート外でしたか…。で、やるとすれば、あんな風になってしま
いますね…。

 ただ、windowposxがプライマリモニタ以上の値(セカンダリモニタが、
プライマリモニタの右でも左でも)を得られるようになっていま
す。可能なら、setwindowposも、現行のcxscreen,cyscreenの値以上の
範囲もサポートして頂ければと…。

 で、マルチモニタ環境で予想とおりに動くマクロとそうでない
マクロがあるので、どこが原因か、ザクッと調べてみました。

 いろいろマクロへの要望を書きましたが、実際にマクロを使ってい
て、非常に不便だったわけです。
 ただ、この掲示板上では「ただ、わぁ〜わぁ〜言っているだけ」
と怪訝されるのもアレですので、ウィンドウ系のマクロ文とキーワードを
ひととりチェックしてみました。(実行環境や条件を少しは変えて
色々動かしてみましたが、設定などでもっと色々な結果がでる可能
性もありますので、「ご参考までに…」ということでご勘弁をm(_ _)m


============================
■簡易調査したマクロ文
nexthidemaru,prevhidemaru,nexthidemaruicon,prevhidemaruicon,
nexttab,prevtab,restoredesktop,savedesktop,scrolllink,
split,splitswitch,
windowcascade,windowhorz,windowtiling,windowvert,windowlist,
compfile,alwaystopswitch,settabmode,settabgroup,settaborder,
setwindowsize,setwindowpos,showwindow,setmonitor


■動作に?なマクロ分
setwindowsize,setwindowpos,settabmodeの3個。

(1)setwindowsize
 マルチモニタ環境で不具合。下記のマクロで
setwindowsize 20,10;
プライマリモニタの右にセカンダリがある場合は問題なし。
しかし、セカンダリモニタを左に位置した場合は、高さは正しく
制御されるが、幅が正しく制御できない。
 これは一応「バグ」と認定できると思われますが…。

(2)setwindowpos
 前の報告のように、プライマリモニタの見かけの画面以外には移動できない。
これは非常に不便です!(ただ、setwindowpos文と他の画面に関するキーワード
が秀丸内で共有しているのだろうと想像しますので、「残念!」とだけ言って
おくだけにしておきます…)

(3)settabmode
 再現性がイマイチですが、「2つのファイルを開いた状態で同マクロ文を
一方の秀丸上で実行した場合、始めタブモードでない状態でsettabmode;」を
実行しても2つのグループに分かれてしまう(それぞれはタブモードになって
いる」症状が発生することがある。
(段組を変更する作業と平行した時に発生したようですが、再現性は特定で
きていません。一応、ご報告まで…)

※ set*系のマクロ文では少し興味深い動作が見られるようですが、現行の
ままのほうが、いろいろできて宜しいような感じがします…(^^;;;

=====================
■簡易調査したキーワード
hidemarucount,monitor,monitorcount,cxscreen,cyscreen,xworkarea,yworkarea,
cxworkarea,cyworkarea,windowcx,windowcy,windowposx,windowposy,
windowwidth,windowheight,splitstate,windowstate,windowstate2

■動作に?なキーワード
特になし。

 ただ、monitor、windowposx等がセカンダリを認識しているのに、
cxscreen,cyscreen,xworkarea,yworkarea,cxworkarea,cyworkarea等は
プライマリの値になったままです。これはこれで「仕様です」とも
言えなくもないですが(と言うか、開発段階では、マルチモニタ環境
そのものを実質的に想定できなかった時代だったのかもしれません)、
セカンダリモニタの内部的な値を知るキーワードがあると、さらに便利
になると思われます。過去のOSとの兼ね合いもあろうかと思われますが
XPでは標準で装備されており、現状ではごく普通な環境だろうと思われ
ますので…。


>あるいは、DLLを作成して呼び出すか、です。
 う〜ん、これは一応、「言っこなし」ということで…(^^;
ここが「C++自由自在」とかいう部屋であれば別ですが、一応、秀丸や
秀丸マクロがベースな場所ですので…。
 そうでないと、あらゆる要望は「自分で勝手にCやC++を使って作れば…」
というような一言で、不毛な場ともなりかねませんので…。

[ ]
RE:08416 monitorとウィンドウ関連キーワNo.08432
秀丸担当 さん 05/06/27 14:54
 

いろいろ調査していただきありがとうございます。

>(1)setwindowsize
> マルチモニタ環境で不具合。下記のマクロで
>setwindowsize 20,10;
>プライマリモニタの右にセカンダリがある場合は問題なし。
>しかし、セカンダリモニタを左に位置した場合は、高さは正しく
>制御されるが、幅が正しく制御できない。
> これは一応「バグ」と認定できると思われますが…。

これは確かにおかしいようです。
修正させていただきます。

>(3)settabmode
> 再現性がイマイチですが、「2つのファイルを開いた状態で同マクロ文を
>一方の秀丸上で実行した場合、始めタブモードでない状態でsettabmode;」を
>実行しても2つのグループに分かれてしまう(それぞれはタブモードになって
>いる」症状が発生することがある。
>(段組を変更する作業と平行した時に発生したようですが、再現性は特定で
>きていません。一応、ご報告まで…)

これはよく状況がわかりませんでした。
非タブモードからsettabmode;でグループが分かれてしまうという状況を再現さ
せることはできませんでした。
不具合かもしれないので、もし再現できるようでしたらまた報告をいただけると
助かります。


その他のことについては、前からの書き込みで、要望として理解しています。
ただV5.00はこのままとしておきたいです。

[ ]