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

close事件中,我坚持如下的窗口位置:

 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); 

问题是位置closures。 据我所知,我得到了内在的地位。 当设置我设置的外部位置。 窗口标题和边框仅在设置时占据。

由于这是跨平台的代码,我不能在所有平台上testing它(但是),我不知道是否有可能得到窗口引擎的指标,以便我可以通过编程来纠正它(想想用户更改DPI或Windows上的主题)。

有没有办法弥补这一点?

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

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