第一次尝试 GUI 软件时,我要做的第一件事就是将窗口居中并使其适合其内容。我个人认为这应该尽可能简单,并且最好在官方文档中进行解释。
在我看来,将一个程序的主窗口置于屏幕中心的能力是任何 GUI 库的一个非常基本的要求。
但是,我无法在官方文档中找到这些说明。
第一次尝试 GUI 软件时,我要做的第一件事就是将窗口居中并使其适合其内容。我个人认为这应该尽可能简单,并且最好在官方文档中进行解释。
在我看来,将一个程序的主窗口置于屏幕中心的能力是任何 GUI 库的一个非常基本的要求。
但是,我无法在官方文档中找到这些说明。
我不记得我在哪里找到了作者的说明,但这里是使用 TIScript 的“香草”Sciter:
const w = self.intrinsicWidthMax();
const h = self.intrinsicHeight();
const (sw, sh) = view.screenBox(#frame, #dimension);
view.move((sw / 2) - (w / 2), (sh / 2) - (h / 2), w, h, true);
#frame
这里指的是整个屏幕,或监视器。#dimension
指定其width
和height
应返回(还有其他符号用于返回屏幕某些方面的坐标)。
view.move
是一个不幸命名的重载方法,因为它除了移动窗口外还允许调整窗口大小。最后一个布尔参数指定是否应将窗口框架和标题的大小视为总窗口大小的一部分。
在官方示例中,建议将它放在里面function self.ready() { ... }
,但我没有遇到任何问题将它放在我的主脚本文件的顶部。
这是 Sciter.JS 的 JavaScript 端口:
// https://github.com/c-smile/sciter-js-sdk/discussions/39#discussioncomment-377697
const [ _, w ] = document.state.contentWidths();
const h = document.state.contentHeight(w);
const [ sw, sh ] = Window.this.screenBox('frame', 'dimension');
Window.this.move((sw - w) / 2, (sh - h) / 2, w, h, true);