关于窗口样式

11 篇文章 0 订阅

微软MSDN 关于窗口样式得说明

常见得窗口样式应该怎么设置?

参考下面得定义

#define UI_WNDSTYLE_FRAME      (WS_VISIBLE | WS_OVERLAPPEDWINDOW)
#define UI_WNDSTYLE_CHILD      (WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN)
#define UI_WNDSTYLE_DIALOG     (WS_VISIBLE | WS_POPUPWINDOW | WS_CAPTION | WS_DLGFRAME | WS_CLIPSIBLINGS | WS_CLIPCHILDREN)

父窗口

创建父窗口,样式一定要设置 WS_CLIPCHILDREN样式,保障父子窗口重绘时UI正常,原理是父窗口不负责绘制与子窗口重叠得区域,由子窗口自己负责绘制。

常量名称常量值说明
WS_OVERLAPPEDWINDOW(WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)窗口是重叠的窗口。 与 WS_TILEDWINDOW 样式相同。
WS_POPUPWINDOW(WS_POPUP | WS_BORDER | WS_SYSMENU)窗口是弹出窗口。 必须组合 WS_CAPTION 和 WS_POPUPWINDOW 样式以使窗口菜单可见。
WS_CAPTION0x00C00000L窗口具有标题栏(包括 WS_BORDER 样式)。窗口的移动通常是通过拖动窗口的‌标题栏‌来实现的。
WS_THICKFRAME0x00040000L窗口具有大小调整边框。 与 WS_SIZEBOX 样式相同。

层叠样式窗口和弹出样式窗口在Windows编程和用户界面中有着明显的区别:‌
层叠样式窗口‌:‌通常指的是具有标题栏、‌菜单栏和边框的标准窗口,‌它们可以重叠在屏幕上,‌用户可以通过标题栏来移动和调整窗口大小。‌层叠窗口默认带有工具栏和菜单栏,‌且可以采取默认尺寸和位置。‌在层叠排列时,‌所有窗口的标题栏都可见,‌但内容可能部分被遮挡‌。

弹出样式窗口‌:‌也被称为弹出窗口或对话框,‌它们通常有一个父窗口,‌并且没有菜单栏和工具栏。‌弹出窗口的Z序通常比其父窗口高,‌确保它们能够吸引用户的注意。‌创建时指定WS_POPUP风格即可创建弹出窗口。‌弹出窗口常用于需要用户进行确认或输入的场景,‌如消息框、‌对话框等‌。

子窗口

创建子窗口,样式一定要加上WS_CLIPSIBLINGS | WS_CLIPCHILDREN 可以保障父子窗口重绘UI正常,和大于等于2哥的兄弟姊妹窗口绘制正常(原理是子窗口之间如果由重叠区域,各自不绘制被重叠的区域)。
子窗口样式有:WS_CHILD WS_CHILDWINDOW 两者含义相同,表示窗口是子窗口。

注意: 当窗口创建的样式采用了子窗口样式时,子窗口的活动区域是限制在父窗口的范围内的
如果不使用子窗口风格,子窗口的活动区域没有限制。

可以在这个窗口风格样式基础上增加 (WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN)

常量名称常量值说明
WS_POPUP0x80000000L窗口是弹出窗口。 此样式不能与 WS_CHILD 样式一起使用

问题

窗口创建时,如果窗口样式设置不当,会出现窗口显示不出来的问题,比如双屏不同分辨率之下,窗口的显示是否异常。

常量名称常量值说明
WS_SYSMENU0x00080000L窗口是弹出窗口。 该窗口的标题栏上有一个窗口菜单。 还必须指定 WS_CAPTION 样式。

从上面的描述,可以看出,如果有WM_SYSMENU样式,但是没有WS_CAPTION样式,就会出问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值