現在のウィンドウ幅を取得・設定する方法No.08127
でるもんたいいじま さん 16/06/24 21:43
 
こんばんは、秀丸ユーザの「でるもんた・いいじま」です。

ツイッターに投稿するためのスクリーンショットを撮る都合で、
秀丸のウィンドウ幅を小さくすることがあります。
(そういう設定をファイルタイプ別設定の中に作り込んであります。)

で、幅を小さくしたまま秀丸を終了し、そのあと普通に共通設定で
秀丸を起動しなおすと、小さかったときのサイズを覚えていて、
共通設定の80文字よりも狭い幅で秀丸が起動してしまいます。

共通設定では折り返しは9pt@96dpi×半角換算80文字に設定しているので、
いちいちマウス操作で的確なサイズに戻すのが面倒です。

…というわけで、自動起動マクロで秀丸起動時に、
「当該ファイルタイプ別設定によればウィンドウサイズが一定文字数の
 固定になっていて、しかるに、開いたウィンドウの実際の幅がその
 文字数よりもも小さい場合は、拡げる」
という設定を組み込みたいのですが、ウィンドウの幅をピクセル単位で
取得・設定する為の巧い方法はありませんか?

あまり調べずに書いているのですが、マクロヘルプで拾えたところでは
こんな感じです:
・「width」で折り返し文字数を取得できる。(代入できるか未確認)
・「fontsize」でフォントの高さを取得できるが、「半角1文字の横幅」の
 取得方法は不明。
・「windowwidth」でウィンドウの幅を取得できる(これも代入できるか
 未確認)が、ピクセル数との換算には行番号領域とかの加算が必要。
・マクロヘルプの「config "x"で指定できる名前」のところには、
 それらしき項目はない。

結局のところ、秀丸の外のツールを使うしかないんでしょうか?
とりあえず、AutoHotkeyでこんな感じで書いたらすんなりいきましたが…。

(事前に指定してある固定サイズより横幅を広くしようとしてもそこで
 打ち止めになる、という秀丸の仕様を前提にしています。)

x_set := 0
Loop {
   WinGetPos ,,, x_size, y_size, A

   if ( x_size < x_set )
      break

   x_set := x_size+100
   WinMove, A, ,,, x_set, y_size
}

[ ]
RE:08127 現在のウィンドウ幅を取得・設定No.08128
IKKI さん 16/06/24 22:17
 
>ウィンドウの幅をピクセル単位で取得・設定する為の巧い方法はありませんか?
windowcx, windowcy, setwindowpos です。

ご参考: http://mobitan.org/hm/misc/#wSize3

[ ]
RE:08128 現在のウィンドウ幅を取得・設定No.08129
でるもんたいいじま さん 16/06/25 00:05
 
でるもんた・いいじまです。

> >ウィンドウの幅をピクセル単位で取得・設定する為の巧い方法はありませんか?
> windowcx, windowcy, setwindowpos です。
> ご参考: http://mobitan.org/hm/misc/#wSize3

ありがとうございます。
Win32 APIの::SetWindowPos() には自力でたどりついていたので、
まずそれでヘルプを検索すべきでした。

秀丸マクロにはsetwindowsizeというそのものずばりの文もあるようで、
widthを取得すれば何とかなるかもしれませんね。

ただ、実は自動起動マクロは未経験でありまして、どうせ作るなら
一気に山盛りのものを作りたいなぁ、という欲求もあったりします。
…なので結局、使い慣れたAutoHotkeyで当座のものを書いてしまいました。

ご面倒をおかけいたしました。m(_ _)m

[ ]