使用 node.js 获取并设置正确的 window 位置

Get and set correct window position with node.js

close 事件中,我坚持 window 的立场如下:

localStorage.lastlayout = JSON.stringify({
  "left": win.x,
  "top": win.y,
  "width": win.width,
  "height": win.height
});

开始时,我使用以下方法恢复它:

    data = JSON.parse(localStorage.lastlayout);
    win.moveTo(data.left, data.top);
    win.resizeTo(data.width, data.height);

问题是位置不对。据我所知,我得到了 inner 位置。设置的时候我设置了outer的位置。 windowing 标题和边框仅在设置时占。

因为这是 cross-platform 代码,我无法在所有平台上测试它(还),我不知道是否有可能获得 windowing 引擎的指标,以便我可以通过编程方式更正它(想想用户在 Windows 上更改 DPI 或主题)。

有没有办法弥补这个?

好的,我搞定了。我检测到相对于已知位置 (0, 0) 的偏移量,然后将其从所需位置减去。它并不完美,但它有效:

      win.resizeTo(128, 128);
      win.moveTo(0, 0);
      log("dbg", "win", "detected metrics: " + win.x + ", " + win.y);
      win.moveTo(data.left - win.x, data.top - win.y);
      win.resizeTo(data.width, data.height);

出于某种原因需要初始调整大小。如果 window 不够大,在某些平台上似乎根本不会绘制标题和边框。接下来我将它移到原点。 win.xwin.y 包含此时的偏移量。第二个 moveTo() 使用更正后的坐标,最后我将 window 调整为实际需要的大小。