On Windows OS: resize/geometry/frameGeometry/x/y function not works right when the Window is maximized
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
去掉WS_CAPTION,虽然可以避免最大化时setContentsMargins()的需要,但会引发一些难以预料的问题。
“win10上的文件浏览器,拖动菜单栏到顶部触发的并不是全屏化”,这是正常的,所有默认的windows窗口,都是这样的...
我又试了一下,WS_CAPTION选项就是控制非全屏化的,并不应该去掉。您的解决方法可能就是Qt搞这个的最合适的写法了。