Windows 7,如何告诉另一个窗口“捕捉”到最大垂直尺寸?以及如何在elisp中做到这一点?

时间:2011-10-12 16:59:17

标签: windows-7 emacs elisp

我最近发现在emacs elisp的Windows上我可以最大化emacs框架:How do I set the size of Emacs' window?

(defun w32-maximize-frame ()
  "Maximize the current frame"
  (interactive)
  (w32-send-sys-command 61488))

我更喜欢的是使用Windows 7“快照”功能将我的emacs窗口“捕捉”到它的最大垂直尺寸。

(defun w32-snap-max-vertical-frame ()
  "Maximize the vertical size of the current frame"
  (interactive)
  ; insert magic here
  )

是否有类似的窗口消息我可以发送到任何窗口,或者我的emacs窗口让它捕捉到最大垂直尺寸?

(作为一个开始,我可以google 61488以上是0xF300并且对应于WM_SYSCOMMAND SC_MAXIMIZE这是窗口系统菜单中的条目,并且“snap to vertical”不在该菜单中,所以我不认为它将通过WM_SYSCOMMAND消息发生....)

2 个答案:

答案 0 :(得分:2)

根据this blog post,您需要执行:

PostMessage(hwndTarget, WM_NCLBUTTONDBLCLK, HTTOP, 0);

我看了一下,但看起来emacs没有等效的w32-send-mesage。如果找到一个,WM_NCLBUTTONDBLCLK为163,HTTOP为12。

答案 1 :(得分:1)

不确定你在问什么。你说的是Emacs框架和Emacs窗口,但我仍然会得到一个印象,也许你真的意味着你想要最大化一个框架,但只在纵向直接。是吗?

如果是,请参阅frame-cmds.el中的命令maximize-frame-vertically。还有命令maximize-frame-horizontallymaximize-frame,以及在最大化之前将帧恢复到其大小(垂直,水平或两者)的命令。