前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >windows窗口取消贴屏幕上边自动最大化的方法

windows窗口取消贴屏幕上边自动最大化的方法

作者头像
大菊观
发布2019-07-02 18:16:03
1.4K0
发布2019-07-02 18:16:03
举报

1.对于固定大小的窗口,直接取消掉WS_SIZEBOX属性即可。

LONG styleValue = ::GetWindowLong(hWnd, GWL_STYLE);
styleValue &= ~WS_SIZEBOX;
::SetWindowLong(hWnd, GWL_STYLE, styleValue);

这样有一个问题,就是对于可以拖拽边框自由调整窗口大小的需求,满足不了,不设置WS_SIZEBOX,就不方便自由拖拽来调整大小了。

2.对于可以自由拖拽边框来调整大小的窗口,则取消掉WS_MAXIMIZEBOX属性即可

LONG styleValue = ::GetWindowLong(hWnd, GWL_STYLE);
styleValue &= ~WS_MAXIMIZEBOX;
::SetWindowLong(hWnd, GWL_STYLE, styleValue);

这样也有一个问题,取消掉了窗口的最大化的属性,比如原先的双击标题栏最大化,都会受影响。

3.改系统设置,通过 Windows 7 的“轻松访问中心”-“使鼠标更易于使用”,选中“防止将窗口移动至屏幕的边缘时自动排列窗口”,关闭 Windows 7 的自动窗口最大化。也可以通过如下代码实现(代码抄的论坛某位大佬的回帖):

#ifndef SPI_GETWINARRANGING
#define SPI_GETWINARRANGING 0x0082
#endif
#ifndef SPI_SETWINARRANGING
#define SPI_SETWINARRANGING 0x0083
#endif
#ifndef SPI_GETSNAPSIZING
#define SPI_GETSNAPSIZING   0x008E
#endif
#ifndef SPI_SETSNAPSIZING
#define SPI_SETSNAPSIZING   0x008F
#endif
// 拖拽前
BOOL fWinArrange;
BOOL fSnapSizing;
SystemParametersInfo(SPI_GETWINARRANGING, 0, (LPVOID)&fWinArrange, 0);
SystemParametersInfo(SPI_GETSNAPSIZING, 0, (LPVOID)&fSnapSizing, 0);
SystemParametersInfo(SPI_SETWINARRANGING, 0, (LPVOID)TRUE, 0);
SystemParametersInfo(SPI_SETSNAPSIZING, 0, (LPVOID)FALSE, 0);
// 拖拽后
SystemParametersInfo(SPI_SETWINARRANGING, 0, (LPVOID)fWinArrange, 0);
SystemParametersInfo(SPI_SETSNAPSIZING, 0, (LPVOID)fSnapSizing, 0);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年06月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档