Qt-Nice-Frameless-Window icon indicating copy to clipboard operation
Qt-Nice-Frameless-Window copied to clipboard

On Windows OS: resize/geometry/frameGeometry/x/y function not works right when the Window is maximized

Open Bringer-of-Light opened this issue 8 years ago • 3 comments

Bringer-of-Light avatar Nov 14 '17 02:11 Bringer-of-Light

Thanks for your code. Yesterday, I forked you code and find something about this question. This is my modification: HWND hwnd = (HWND)this->winId(); DWORD style = ::GetWindowLong(hwnd, GWL_STYLE); ::SetWindowLong(hwnd, GWL_STYLE, style | WS_MAXIMIZEBOX | WS_THICKFRAME); Then, call showMaximized() of widget class, this question has been solved. But, call showFullScreen() of widget, this question doesn't been solved.

非常感谢您的代码。非常抱歉,我的英文很差,只能上汉语了。昨天我将您的代码运行了一下,您现在的方法是完美解决了这个问题; 但我感觉有些美中不足,于是查找了一下MSDN上关于DWM的文档,当我将WS_CAPTION设置去掉后,最大化就不在出现这个问题。但拖动菜单栏到顶部触发Aero效果并全屏化操作时,仍然有这个问题。

我观察过win10系统上的文件浏览器,拖动菜单栏到顶部触发的并不是全屏化……这个我并不知道他们是怎么做到的,如果您有时间的话可以看一下这个问题。

附加MSDN关于DWM以及其他的链接: Desktop App User Interface

Domacles avatar Nov 14 '17 08:11 Domacles

去掉WS_CAPTION,虽然可以避免最大化时setContentsMargins()的需要,但会引发一些难以预料的问题。

“win10上的文件浏览器,拖动菜单栏到顶部触发的并不是全屏化”,这是正常的,所有默认的windows窗口,都是这样的...

Bringer-of-Light avatar Nov 15 '17 01:11 Bringer-of-Light

我又试了一下,WS_CAPTION选项就是控制非全屏化的,并不应该去掉。您的解决方法可能就是Qt搞这个的最合适的写法了。

Domacles avatar Nov 15 '17 01:11 Domacles