Window Styles / EX Styles ···

窗口样式

WS_POPUP

弹出式窗口(不能与WS_CHILDWINDOW样式同时使用)

WS_CHILDWINDOW

子窗口(不能与WS_POPUP合用)

WS_MINIMIZE

创建窗口拥有最小化按钮

WS_MINIMIZEBOX

创建窗口拥有最小化按钮,须同时指定WS_SYSTEM样式

WS_VISIBLE

可见状态

WS_DISABLED

不可用状态

WS_CLIPSIBLINGS

使窗口排除子窗口之间的相对区域

WS_CLIPCHILDREN

当在父窗口内绘图时,排除子窗口区域

WS_MAXIMIZE

具有最大化按钮

WS_MAXIMIZEBOX

创建窗口拥有最大化按钮,须同时指定WS_SYSTEM样式

WS_CAPTION

有标题框和边框(和WS_TILED样式相同)

WS_BORDER

有单边框

WS_DLGFRAME

带对话框边框样式,不带标题框

WS_VSCROLL

有垂直滚动条

WS_HSCROLL

有水平滚动条

WS_SYSMENU

标题框上带有窗口菜单(须指定WS_CAPTION样式)

WS_THICKFRAME

有可调边框(与WS_SIZEBOX样式相同)

WS_TILED

与WS_OVERLAPPED风格相同

WS_TILEDWINDOW

与WWS_OVERLAPPEDWINDOW风格相同

WS_GROUP

组样式,每个组的第一个控件具有WS_TABSTOP样式

WS_TABSTOP

可接受TAB键

WS_OVERLAPPED

创建一个重叠式窗口,拥有标题栏和边框

WS_OVERLAPPEDWINDOW

WS_OVERLAPPED风格

WS_CAPTION风格

WS_SYSMENU风格

WS_THICKFRAME风格

WS_MINIMIZEBOX风格

WS_MAXIMIZEBOX风格

窗口扩展样式参考列表

WS_EX_DLGMODALFRAME

带双层边框

WS_EX_NOPARENTNOTIFY

创建/销毁时不通知父窗口

WS_EX_TOPMOST

窗口置顶(停留在所有非最高层窗口的上面)

WS_EX_ACCEPTFILES

可接受文件拖放

WS_EX_TRANSPARENT

透明样式,在同属窗口已重画时该窗口才可重画

WS_EX_MDICHILD

MDI子窗口样式

WS_EX_TOOLWINDOW

工具条窗口样式

WS_EX_WINDOWEDGE

带凸起边缘的边框

WS_EX_CLIENTEDGE

带阴影的边缘

WS_EX_CONTEXTHELP

有上下文帮助样式,标题栏包含一个问号标志

WS_EX_RIGHT

右对齐

WS_EX_RTLREADING

窗口文本从右到左显示

WS_EX_LEFTSCROLLBAR

垂直滚动条在窗口左边界

WS_EX_CONTROLPARENT

允许用户使用TAB键在窗口的子窗口间搜索

WS_EX_STATICEDGE

当窗口为不可用状态时创建一个三维边缘

WS_EX_APPWINDOW

当窗口可见时将一个顶层窗口放置在任务栏上

WS_EX_OVERLAPPEDWINDOW

带凸起边缘的边框,边缘有阴影

WS_EX_PALETTEWINDOW

带立体边框,有工具条窗口样式,窗口在顶层

WS_EX_LAYERED = &H80000

分层或透明窗口,该样式可使用混合特效

WS_EX_NOINHERITLAYOUT

子控件不继承窗体或控件的布局

WS_EX_LAYOUTRTL

窗体或控件将具有从右向左的布局(因而会被镜像)

WS_EX_COMPOSITED

用双缓冲从下到上绘制窗口的所有子孙(WinXP以上)

WS_EX_NOACTIVATE

处于顶层但不激活

按钮风格

BS_AUTOCHECKBOX

同复选按钮类似,点击一下选中,再次点击取消。

BS_AUTORADIOBUTTON

同单选按钮类似,点击后选中标志将从同组的其他单选按钮处移到当前选项。

BS_CHECKBOX

复选按钮

BS_DEFPUSHBUTTON

默认普通按钮,具有较黑的边框。

BS_GROUPBOX

分组框

BS_LEFTTEXT

同单选按钮或复选按钮配合使用,标题将显示在左侧。

BS_OWNERDRAW

可创建一个拥有者自绘按钮。

BS_PUSHBUTTON

普通下压按钮

BS_RADIOBUTTON

圆形单选按钮

BS_3STATE

三态复选按钮,三种状态即:选中,未选中,未定

BS_AUTOCHECKBOX

检查框,按钮的状态会自动改变

BS_AUTORADIOBUTTON

圆形选择按钮,按钮的状态会自动改变

BS_AUTO3STATE

允许按钮有三种状态即:选中,未选中,未定

BS_CHECKBOX

检查框

BS_LEFTTEXT

左对齐文字

  
  
  
  
  

旋转按钮控件

UDS_HORZ

指定一个水平旋转按钮.若不指定该风格则创建一个垂直的旋转按钮

UDS_WRAP

当旋转按钮增大到超过最大值时,自动重置为最小值,当减小至低于最小值时,自动重置为最大值

UDS_ARROWKEYS

当用户按下向下或向上箭头键时,旋转按钮值递增或递减

UDS_SETBUDDYINT

旋转按钮将自动更新伙伴控件中显示的数值,如果伙伴控件能接受输入,则可在伙伴控件中输入新的旋转按钮值

UDS_NOTHOUSANDS

伙伴控件中显示的数值每隔三位没有千位分隔符

UDS_AUTOBUDDY

自动使旋转按钮拥有一个伙伴控件

UDS_ALIGNRIGHT

旋转按钮在伙伴控件的右侧

UDS_ALIGNLEFT

旋转按钮在伙伴控件的左侧

轨道条控件

TBS_HORZ

指定一个水平轨道条.该风格是默认的

TBS_VERT

指定一个垂直轨道条

TBS_AUTOTICKS

在范围设定后,自动为轨道条加上刻度

TBS_NOTICKS

轨道条无刻度

TBS_BOTTOM

在水平轨道条的底部显示刻度,可与TBS_TOP一起使用

TBS_TOP

在水平轨道条的顶部显示刻度,可与TBS_BOTTOM一起使用

TBS_RIGHT

在垂直轨道条的右侧显示刻度,可与TBS_LEFT一起使用

TBS_LEFT

在垂直轨道条的左侧显示刻度,可与TBS_RIGHT一起使用

TBS_BOTH

在轨道条的上下部或左右两侧都显示刻度

TBS_ENABLESELRANGE

在轨道条中显示一个选择范围

文本编辑框风格

ES_AUTOHSCROLL

当在行尾添加一个字符后自动向右滚动10个字符

ES_AUTOVSCROLL

当输入回车后自动上滚一行

ES_CENTER

字符居中显示

ES_LEFT

字符左对齐

ES_LOWERCASE

统一转化为小写字母

ES_MULTILINE

允许多行显示

ES_NOHIDESEL

当编辑失去焦点时隐藏对字符的选定,重新获得焦点后以反色显示选中内容

ES_OEMCONVERT

将ANSI字符转化为OEM字符

ES_PASSWORD

以星号显示字符,多用于回显密码

ES_RIGHT

字符右对齐

ES_UPPERCASE

统一转化为大写字母

ES_READONLY

设置字符为只读

ES_WANTRETURN

接受回车键输入

列表框风格

LBS_STANDARD

创建一个具有边界和垂直滚动条、当选择发生变化或条目被双击时能够通知父窗口的标准列表框。所有条目按字母排序

LBS_SORT

按字母排序

LBS_NOSEL

条目可视但不可选

LBS_NOTIFY

当用户选择或双击一个串时,发出消息通知父窗口

LBS_DISABLENOSCROLL

在条目不多时依然显示并不起作用的滚动条

LBS_MULTIPLESEL

允许条目多选

LBS_EXTENDEDSEL

可用SHIFT和鼠标或指定键组合来选择多个条目

LBS_MULTICOLUMN

允许多列显示

LBS_OWNERDRAWVARIABLE

创建一个拥有者画列表框,条目高度可以不同

LBS_OWNERDRAWFIXED

创建一个具有相同条目高度的拥有者画列表框

LBS_USETABSTOPS

允许使用TAB制表符

LBS_NOREDRAW

当条目被增删后不自动更新列表显示

LBS_HASSTRINGS

记忆了添加到列表中的字串

LBS_WANTKEYBOARDINPUT

当有键按下时向父窗口发送WM_VKEYTOITEM或WM_CHARTOITEM消息

LBS_NOINTEGRALHEIGHT

按程序设定尺寸创建列表框

组合框风格

CBS_AUTOHSCROLL

当在行尾输入字符时自动将编辑框中的文字向右滚动

CBS_DROPDOWN

同CBS_SIMPLE风格类似,只是只有在用户点击下拉图标时才会显示出下拉列表

CBS_DROPDOWNLIST

同CBS_DROPDOWN类似,只是显示当前选项的编辑框为一静态框所代替

CBS_HASSTRINGS

创建一个包含了由字串组成的项目的拥有者画组合框

CBS_OEMCONVERT

将组合框中的ANSI字串转化为OEM字符

CBS_OWNERDRAWFIXED

由下拉列表框的拥有者负责对内容的绘制;列表框中各项目高度相同

CBS_OWNERDRAWVARIABLE

由下拉列表框的拥有者负责对内容的绘制;列表框中各项目高度可以不同

CBS_SIMPLE

下拉列表始终显示

CBS_SORT

自动对下拉列表中的项目进行排序

CBS_DISABLENOSCROLL

当下拉列表显示内容过少时显示垂直滚动条

CBS_NOINTEGRALHEIGHT

在创建控件时以指定的大小来精确设定组合框尺寸

树形视图控件

TVS_HASLINES

在父项与子项间连线以清楚地显示结构

TVS_LINESATROOT

只在根部画线

TVS_HASBUTTONS

显示带有"+"或"-"的小方框来表示某项能否被展开或已展开

TVS_EDITLABELS

用户可以编辑表项的标题

TVS_SHOWSELALWAYS

即使控件失去输入焦点,仍显示出项的选择状态

TVS_DISABLEDRAGDROP

不支持拖动操作

列表视图控件

LVS_ALIGNLEFT

当显示格式是大图标或小图标时,标题放在图标的左边.缺省情况下标题放在图标的下面

LVS_ALIGNTOP

当显示格式是大图标或小图标时,标题放在图标的上边

LVS_AUTOARRANGE

当显示格式是大图标或小图标时,自动排列控件中的表项

LVS_EDITLABELS

用户可以修改标题

LVS_ICON

指定大图标显示格式

LVS_LIST

指定列表显示格式

LVS_NOCOLUMNHEADER

在报告格式中不显示列的表头

LVS_NOLABELWRAP

当显示格式是大图标时,使标题单行显示.缺省时是多行显示

LVS_NOSCROLL

列表视图无滚动条

LVS_NOSORTHEADER

报告列表视图的表头不能作为排序按钮使用

LVS_OWNERDRAWFIXED

由控件的拥有者负责绘制表项

LVS_REPORT

指定报告 显示格式

LVS_SHAREIMAGELISTS

使列表视图共享图像序列

LVS_SHOWSELALWAYS

即使控件失去输入焦点,仍显示出项的选择状态

LVS_SINGLESEL

指定一个单选择列表视图.缺省时可以多项选择

LVS_SMALLICON

指定小图标显示格式

LVS_SORTASCENDING

按升序排列表项

LVS_SORTDESCENDING

按降序排列表项

静态文本框风格

SS_CENTER

字符居中显示

SS_LEFT

字符左对齐

SS_LEFTNOWORADWRAP

字符左对齐,可处理TAB制表符,不支持自动换行,超过末尾字符被裁剪

SS_BLACKRECT

用窗口边框色填充的矩形

SS_BLSCKFRAME

矩形边框,与窗口边框同色

SS_GRAYRECT

用屏幕背景色填充的矩行

SS_GRAYFRAME

矩形边框,使用屏幕背景色

SS_WHITERECT

用窗口背景色填充的矩行

SS_RIGHT

字符右对齐

SS_WHITEFRAME

矩形边框,使用窗口背景色

控件样式参考列表

DS_ABSALIGN

对话框的坐标为屏幕坐标(缺省为客户区坐标)

DS_SYSMODAL

系统模式(仅支持16位程序),不能与DS_CONTROL同用

DS_LOCALEDIT

在对话框内部为编辑框分配内存(仅支持16位程序)

DS_SETFONT

可定制对话框字体

DS_MODALFRAME

框架样式(不能与WS_CAPTION同用)

DS_NOIDLEMSG

无空闲消息

DS_SETFOREGROUND

使对话框在最前面显示

DS_3DLOOK

四周有3维边框

DS_FIXEDSYS

使用系统固定字体

DS_NOFAILCREATE

忽略创建过程中的错误

DS_CONTROL

控件模式,可作为其他对话框的子窗口

DS_CENTER

在屏幕居中

DS_CENTERMOUSE

在鼠标位置居中

DS_CONTEXTHELP

有上下文帮助按钮

<think> 我们正在讨论Windows窗口风格,特别是WS_OVERLAPPEDWINDOW。根据引用[1]和[2]: - WS_OVERLAPPEDWINDOW是一个组合风格,它由多个基本风格通过按位或组合而成。 - 具体组合:WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX。 这意味着一个具有WS_OVERLAPPEDWINDOW风格的窗口将具有以下特性: - 重叠窗口(WS_OVERLAPPED) - 标题栏(WS_CAPTION) - 系统菜单(WS_SYSMENU) - 可调整边框(WS_THICKFRAME) - 最小化按钮(WS_MINIMIZEBOX) - 最大化按钮(WS_MAXIMIZEBOX) 用户还询问了其他可选的窗口类型。实际上,Windows提供了多种窗口风格,可以分为两大类:窗口风格(Window Styles)和扩展窗口风格(Extended Window Styles)。这里我们主要讨论窗口风格。 以下是一些常用的窗口风格(Window Styles)及其含义: 1. **WS_OVERLAPPED**:创建一个重叠窗口。重叠窗口通常有标题栏和边框。类似于WS_TILED风格。 2. **WS_POPUP**:创建一个弹出窗口。不能与WS_CHILD风格同时使用。 3. **WS_CHILD**:创建一个子窗口。不能与WS_POPUP风格同时使用。 4. **WS_MINIMIZE**:初始状态为最小化(仅对重叠窗口有效)。 5. **WS_VISIBLE**:初始状态为可见。 6. **WS_DISABLED**:初始状态为禁用。 7. **WS_CLIPSIBLINGS**:裁剪相邻的子窗口(用于子窗口)。 8. **WS_CLIPCHILDREN**:在父窗口绘制时裁剪子窗口区域。 9. **WS_CAPTION**:包含标题栏(等于WS_BORDER | WS_DLGFRAME)。 10. **WS_BORDER**:有细线边框。 11. **WS_DLGFRAME**:有对话框样式的边框,通常没有标题栏。 12. **WS_VSCROLL**:有垂直滚动条。 13. **WS_HSCROLL**:有水平滚动条。 14. **WS_SYSMENU**:在标题栏上有系统菜单(必须同时指定WS_CAPTION)。 15. **WS_THICKFRAME**:有可调整边框(用于改变窗口大小)。 16. **WS_MINIMIZEBOX**:有最小化按钮(必须同时指定WS_SYSMENU)。 17. **WS_MAXIMIZEBOX**:有最大化按钮(必须同时指定WS_SYSMENU)。 18. **WS_GROUP**:指定一组控件的起点(用于对话框)。 19. **WS_TABSTOP**:指定控件可以通过按Tab键获得焦点。 除了单独使用这些风格外,Windows还定义了一些常用的组合风格,例如: - **WS_OVERLAPPEDWINDOW**:即上面介绍的组合。 - **WS_POPUPWINDOW**:组合了WS_POPUP, WS_BORDER, WS_SYSMENU。注意:要使系统菜单可见,必须同时指定WS_CAPTION。 另外,还有一个扩展风格(Extended Window Styles),以WS_EX_开头,例如WS_EX_CLIENTEDGE(客户端边缘)、WS_EX_WINDOWEDGE(窗口边缘)等,用于更细致的控制。 在创建窗口时,我们可以通过组合不同的风格来达到所需的效果。例如,引用[2]中提到,如果我们只需要系统菜单,而不需要其他特性(如可调整边框、最小化/最大化按钮),则可以直接指定WS_SYSMENU风格,但要注意WS_SYSMENU需要与WS_CAPTION一起才能显示(因为系统菜单在标题栏上)。所以,如果我们只需要系统菜单,通常需要同时指定WS_CAPTION和WS_SYSMENU。 示例: - 创建一个只有标题栏和系统菜单的窗口(没有最小化/最大化按钮,也不能调整大小): `WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU` 注意:在创建窗口时,我们也可以组合多个风格。例如,如果我们想要一个带垂直滚动条的弹出窗口,可以这样写: `WS_POPUP | WS_VSCROLL` 总结:WS_OVERLAPPEDWINDOW是一个常用的组合风格,它提供了标准的重叠窗口的所有基本特性。如果我们需要不同的特性,可以单独组合所需的风格。 §§相关问题§§ 1. 如何自定义窗口风格以移除最大化按钮? 2. 扩展窗口风格(WS_EX_)有哪些常用选项? 3. 窗口风格(如WS_OVERLAPPEDWINDOW)与窗口类风格(CS_)有什么区别? </think> ### `WS_OVERLAPPEDWINDOW` 的含义及其他窗口类型 `WS_OVERLAPPEDWINDOW` 是 Windows GUI 编程中的标准窗口风格组合,用于创建具有完整功能的顶层窗口。以下是详细解释: #### 1. `WS_OVERLAPPEDWINDOW` 的组成 根据定义: ```c #define WS_OVERLAPPEDWINDOW ( \ WS_OVERLAPPED | \ WS_CAPTION | \ WS_SYSMENU | \ WS_THICKFRAME | \ WS_MINIMIZEBOX | \ WS_MAXIMIZEBOX \ ) ``` **包含的功能**: | 标志 | 功能 | |------|------| | WS_OVERLAPPED | 基础重叠窗口 | | WS_CAPTION | 标题栏(包含窗口标题)| | WS_SYSMENU | 系统菜单(左上角菜单)| | WS_THICKFRAME | 可调整大小的边框 | | WS_MINIMIZEBOX | 最小化按钮 | | WS_MAXIMIZEBOX | 最大化按钮 | **典型效果**: - 带标题栏的标准窗口 - 支持最小化/最大化/关闭 - 可通过边框调整大小 - 包含系统菜单(右键点击标题栏或按Alt+空格触发) #### 2. 其他常用窗口风格类型 以下是主要的窗口风格分类: ##### 🔹 **基础窗口类型** | 风格 | 描述 | 典型应用 | |------|------|----------| | **WS_OVERLAPPED** | 基础重叠窗口 | 简单对话框 | | **WS_POPUP** | 无父窗口的弹出窗口 | 消息框、菜单 | | **WS_CHILD** | 子窗口(必须依附父窗口) | 控件容器 | ##### 🔹 **功能扩展风格** | 风格 | 功能 | 组合示例 | |------|------|----------| | **WS_BORDER** | 单线边框 | `WS_POPUP | WS_BORDER` | | **WS_DLGFRAME** | 对话框式双线边框 | 传统对话框 | | **WS_HSCROLL** | 水平滚动条 | 文本编辑器 | | **WS_VSCROLL** | 垂直滚动条 | 列表控件 | | **WS_CLIPCHILDREN** | 裁剪子窗口区域 | 复杂布局窗口 | ##### 🔹 **组合风格** | 风格 | 等效组合 | 特点 | |------|-----------|------| | **WS_OVERLAPPEDWINDOW** | 见上文 | 标准应用窗口 | | **WS_POPUPWINDOW** | `WS_POPUP | WS_BORDER | WS_SYSMENU` | 带边框的弹出窗口 | | **WS_TILEDWINDOW** | `WS_OVERLAPPEDWINDOW` 别名 | 同`WS_OVERLAPPEDWINDOW` | #### 3. 自定义窗口风格示例 根据引用[^2],若只需系统菜单无需其他功能: ```c // 仅包含系统菜单的窗口 hwnd = CreateWindow( lpszClassName, lpszTitle, WS_OVERLAPPED | WS_SYSMENU, // 自定义组合 CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); ``` **自定义规则**: 1. 基本类型必须选择:`WS_OVERLAPPED`/`WS_POPUP`/`WS_CHILD` 2. 功能标志用按位或组合:`| WS_CAPTION | WS_SYSMENU` 3. 冲突标志不可组合:如`WS_CHILD`与`WS_POPUP` #### 4. 扩展窗口风格(WS_EX_) 以`WS_EX_`开头的扩展风格用于特殊效果: ```c WS_EX_CLIENTEDGE // 3D凹陷边框 WS_EX_TOPMOST // 置顶窗口 WS_EX_LAYERED // 半透明效果 WS_EX_TOOLWINDOW // 精简标题栏 ``` **使用方式**: ```c CreateWindowEx( WS_EX_CLIENTEDGE, // 扩展风格 className, title, WS_OVERLAPPEDWINDOW, // 基础风格 ... ); ``` > 💡 **设计建议**:优先使用`WS_OVERLAPPEDWINDOW`作为默认风格,需特殊功能时再通过移除标志定制(如移除`WS_MAXIMIZEBOX`禁用最大化)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值