mobp icon indicating copy to clipboard operation
mobp copied to clipboard

新文档的位置和大小出错(暂时不可复现,但随即出现)

Open CuiYongen opened this issue 4 years ago • 10 comments

启动这个程序后,文档的位置大小有一些问题:

    1. 我的笔记本+显示器,新文档经常在显示器显示,而不是笔记本屏幕
    1. 打开后的大小,偶尔会变成只有三个按钮多一点点的宽度 image

尝试的办法:

    1. 关闭mobp,将新文档在屏幕打开,移动到屏幕,调整大小(包括最大化),保存(或不保存)后关闭。打开mobp。
    1. 打开mobp,新文档打开后,移动到屏幕,调整大小(包括最大化),保存(或不保存)后关闭。

以上方法均无效

CuiYongen avatar Apr 13 '20 07:04 CuiYongen

估计是因为用了两个显示器,而且2号屏幕还在1号左边,导致的位置计算错误。

源文件的38-43行代码:

if (hwnd)
    {
        SetWindowPos(hwnd, HWND_BOTTOM, -512, -512, 0, 0, SWP_NOSENDCHANGING);
        SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW);
        return TRUE;
    }

15921483570 avatar Apr 17 '20 01:04 15921483570

把 -512 改成 0 可以解决吗?不太懂,请教一下~

CuiYongen avatar Apr 20 '20 09:04 CuiYongen

把 -512 改成 0 可以解决吗?不太懂,请教一下~

不确定,我的没出现这个问题,可能要发邮件问作者或者自己debug了

15921483570 avatar Apr 21 '20 00:04 15921483570

“我的笔记本+显示器,新文档经常在显示器显示,而不是笔记本屏幕”

我之前似乎遇到类似问题,似乎是新文档窗口会在原有窗口所在的位置生成。但是你所说的情况似乎和我遇到的不同。。。我也不知道咋办

“打开后的大小,偶尔会变成只有三个按钮多一点点的宽度”

这种情况通常是因为后台进程被强行结束?请尽量使用mobp自带的关闭功能。同时我观察到似乎原有窗口记忆尺寸过小(我也不知道要小到什么程度),也会导致这种情况。最好的办法是在打开mobp之前先启动一次excel&word&powerpoint,将窗口最大化关闭,然后再启动mobp。

说实话这些问题的确非常玄学。我在写这个程序的时候都是一点一点试出来的😆。

kkocdko avatar Apr 26 '20 01:04 kkocdko

估计是因为用了两个显示器,而且2号屏幕还在1号左边,导致的位置计算错误。

源文件的38-43行代码:

if (hwnd)
    {
        SetWindowPos(hwnd, HWND_BOTTOM, -512, -512, 0, 0, SWP_NOSENDCHANGING);
        SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW);
        return TRUE;
    }

这里写-512是为了应对如果在打开office的瞬间快速切换窗口,可能导致窗口被send了SizeChange从而出现无法将窗口尺寸调整至0 x 0的情况。写个-512可以使得窗口未被缩小至0的情况下仍然能被隐藏,是一种投机取巧的实现方法。

kkocdko avatar Apr 26 '20 01:04 kkocdko

估计是因为用了两个显示器,而且2号屏幕还在1号左边,导致的位置计算错误。 源文件的38-43行代码:

if (hwnd)
    {
        SetWindowPos(hwnd, HWND_BOTTOM, -512, -512, 0, 0, SWP_NOSENDCHANGING);
        SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW);
        return TRUE;
    }

这里写-512是为了应对如果在打开office的瞬间快速切换窗口,可能导致窗口被send了SizeChange从而出现无法将窗口尺寸调整至0 x 0的情况。写个-512可以使得窗口未被缩小至0的情况下仍然能被隐藏,是一种投机取巧的实现方法。

嗯,通过改变窗口尺寸的方法来达到隐藏效果是个不错的方法,但是还原窗口的时候有直接最大化的方法吗?有的话应该就能解决这个问题了。

15921483570 avatar Apr 26 '20 02:04 15921483570

估计是因为用了两个显示器,而且2号屏幕还在1号左边,导致的位置计算错误。 源文件的38-43行代码:

if (hwnd)
    {
        SetWindowPos(hwnd, HWND_BOTTOM, -512, -512, 0, 0, SWP_NOSENDCHANGING);
        SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW);
        return TRUE;
    }

这里写-512是为了应对如果在打开office的瞬间快速切换窗口,可能导致窗口被send了SizeChange从而出现无法将窗口尺寸调整至0 x 0的情况。写个-512可以使得窗口未被缩小至0的情况下仍然能被隐藏,是一种投机取巧的实现方法。

嗯,通过改变窗口尺寸的方法来达到隐藏效果是个不错的方法,但是还原窗口的时候有直接最大化的方法吗?有的话应该就能解决这个问题了。

保持普通大小窗口的尺寸正常,这个可能需要后台驻留进程,会比较麻烦。我觉得还是在启动后台进程之前先让窗口记忆一下最大化状态会比较好,有空可以试试。

kkocdko avatar Apr 26 '20 07:04 kkocdko

保持普通大小窗口的尺寸正常,这个可能需要后台驻留进程,会比较麻烦。我觉得还是在启动后台进程之前先让窗口记忆一下最大化状态会比较好,有空可以试试。

这样也可以,而且这个尺寸系统应该是有记忆的,因为每次打开基本都会跟上一次一样的大小。就是不知道接口是什么了

15921483570 avatar Apr 26 '20 12:04 15921483570

我也觉得这个问题很烦。 我使用的时候也是打开程序只有一点点大小,如果能置顶大小和位置打开就好了。

ghost avatar Jun 11 '21 01:06 ghost

在 README.md 中添加了对此问题的规避方法。

kkocdko avatar May 27 '23 17:05 kkocdko