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

时间:2015-08-03 14:57:34

标签: node.js nw.js

top事件中,我按如下方式保持窗口位置:

close

一开始,我将其恢复为:

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

问题是该位置已关闭。据我所知,我得到了内部的位置。设置时,我设置外部位置。窗口标题和边框仅在设置时考虑。

由于这是跨平台代码,我无法在所有平台上测试它(还),我不知道是否有可能获得窗口引擎的指标,以便我可以通过编程方式对其进行更正(想想看)用户在Windows上更改DPI或主题。)

有没有办法弥补这个?

1 个答案:

答案 0 :(得分:3)

好的,我已经钉了它。我检测到已知位置(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);

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