2020年5月3日日曜日

ウィンドウの位置とサイズを引数で変更

xyzzyの位置がずれたとき、いちいちマウスでつまんだりドラッグしたりして直すのが面倒なので、コマンドで戻せるようにする。

;; ウィンドウの位置とサイズを引数で変更
;; 「X座標 Y座標 ウィンドウ幅 ウインドウの高さ」の4つの引数を取る
;; > xyzzy の音 - バッファ/ウィンドウ/フレーム
;; > http://hie.s64.xrea.com/xyzzy/note/buffer.html#xyzzy-resize
;; を参考にした

(require "wip/winapi")
(unless (fboundp 'SetWindowPos)
  (c:*define-dll-entry winapi:BOOL SetWindowPos
    (winapi:HWND winapi:HWND winapi:INT winapi:INT winapi:INT winapi:INT winapi:UINT)
    "user32"))
;サイズを変更
(defun xyzzy-resize ()
  (interactive)
  (if si:*command-line-args* (setq x (pop si:*command-line-args*))(setq x "1280"))
  (if si:*command-line-args* (setq y (pop si:*command-line-args*))(setq y "43"))
  (if si:*command-line-args* (setq w (pop si:*command-line-args*))(setq w "608"))
  (if si:*command-line-args* (setq h (pop si:*command-line-args*))(setq h "1023"))
  ;位置/サイズを指定
  (SetWindowPos (get-window-handle) 0
  (parse-integer x)  ;X座標
  (parse-integer y) ;Y座標
  (parse-integer w) ;ウィンドウ幅
  (parse-integer h) ;ウィンドウ高さ
  0))


xyzzy -e (xyzzy-resize) 1280 43 608 1023

のように「X座標 Y座標 幅 高さ」の数値を与えて外部から変更する。

参考


0 件のコメント:

コメントを投稿