Windows窗口风格详细解释
来源:互联网 发布:瞻博网络中国区 编辑:程序博客网 时间:2024/04/28 22:01
窗口风格是各种窗口开发的重要基础之一。它可以分为普通风格(WS_系列)和扩展风格(WS_EX_系列)。从其特点上,主要分成两大类:
1.一类表明窗口和其它窗口的关系,包括:WS_CHILD、WS_POPUP、WS_OVERLAPPED、WS_CLIPCHILDREN、WS_CLIPSIBLINGS、WS_GROUP、
WS_EX_TOPMOST、WS_EX_MDICHILD等。(这里的关系并不是指Foreground/Background window和Z-Order的概念)
2.一类表明窗口自身的外观特征,包括:WS_BORDER、WS_CAPTION、WS_MINIMIZE、WS--_MINIMIZEBOX、WS_DLGFRAME、
WS_EX_DLGMODALFRAME 、WS_EX_WINDOWEDGE等。
例如:
一个标准的Dialog窗口,除了Dialog自身的风格(DS_系列)外,其窗口风格如下:
普通风格:WS_CAPTION | WS_POPUP | WS_VISIBLE | WS_CLIPSIBLINGS | WS_SYSMENU
扩展风格:WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE | WS_EX_CONTROLPARENT | WS_EX_APPWINDOW
一个标准的Frame窗口,其风格如下:
普通风格:WS_CAPTION | WS_OVERLAPPED | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_SYSMENU | WS_MAXIMIZE | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX
扩展风格: WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_WINDOWEDGE
- 大部分的窗口风格都比较容易理解。下面重点讲解一下第一类风格中主要几个风格的差异:
WS_POPUP和WS_OVERLAPPED的窗口均为top-level窗口,即:如果采用SetWindowPos改变其位置需要使用Screen坐标,而不是Client坐标。不同的是,WS_POPUP窗口有父窗口,使用GetParent方法可以获得;而WS_OVERLAPPED窗口却没有,GetParent方法为NULL。也就是说,对于一个界面应用程序而言,一定存在至少一个WS_OVERLAPPED窗口(作为应用程序的主窗口)。
此外,WS_OVERLAPPED窗口总是有title bar和border,即使你显示删除WS_CAPTION和WS_BORDER风格,而WS_POPUP却没有该特点。 - WS_CLIPCHILDREN:绘图时,将该窗口中的子窗口所占的区域排除在外。当你创建父窗口时,可以使用该风格。如果使用Invalidate方法,这部分区域不会计算在更新区域内。因此,有可能产生这些子窗口没有刷新的问题。
- WS_CLIPSIBLINGS:绘图时,将该子窗口和其同级其它子窗口(具有相同的父窗口)重叠的区域排除在外。如果使用Invalidate方法,这部分区域不会计算在更新区域内。这样此时绘画,就不会画到其它窗口上。
- WS_EX_APPWINDOW:强迫一个top-level窗口在可见时,出现在TaskBar上。但这并不意味着一个窗口出现在TaskBar上就一定需要该风格,其实,如果是主线程的第一个窗口(m_pMainWnd),即使没有该风格,也会出现在TaskBar上。
- WS_EX_LAYERED:建立Layered窗口,即:具有复杂视觉特征的窗口,比如:透明窗口。该风格不能用于子窗口。主要有SetLayeredWindowAttributes和UpdateLayeredWindow两个方法,其中,后者更加灵活。前者通常用来实现透明窗口等简单任务。
上面提到了top-level窗口,因此有必要解释下面几个方法的差异:
GetParent方法:如果是子窗口(具有WS_CHILD风格),那么总能得到一个有效的临时窗口对象(Immediate Window);如果是top-level窗口,又分为两种情况:如果该窗口为非拥有(unowned),那么返回NULL,否则,返回拥有者窗口对象。因此,GetParent并非总是返回父窗口。
GetOwner方法:获得拥有者窗口,默认为父窗口。父子窗口中的子窗口只能出现在父窗口的客户区域,而具有拥有者窗口的窗口可以出现在桌面的任何位置。这里的Owner窗口,不同于API方法GetWindow获得的Owner窗口,它是MFC特定的概念。
GetAncestor方法:获得祖先窗口。有三个选择,GA_PARENT, GA_ROOT, GA_ROOTOWNER
MFC中的Immediate窗口:在MSDN中关于MFC的描述中,经常能看到Immediate和Permanent Window字样。其中,Immediate窗口是MFC中临时产生的窗口对象,MFC会定期清理这些对象,因此通常不可以保存作为类成员变量。
Windows各种样式详解
WS_POPUP - 弹出式窗口(不能与WS_CHILDWINDOW样式同时使用)
WS_CHILDWINDOW - 子窗口(不能与WS_POPUP合用)
WS_MINIMIZE - 最小化状态
WS_VISIBLE - 可见状态
WS_DISABLED - 不可用状态
WS_CLIPSIBLINGS - 使窗口排除子窗口之间的相对区域
WS_CLIPCHILDREN - 当在父窗口内绘图时,排除子窗口区域
WS_MAXIMIZE - 具有最大化按钮,须指定WS_SYSTEM样式
WS_CAPTION - 有标题框和边框(和WS_TILED样式相同)
WS_BORDER - 有单边框
WS_DLGFRAME - 带对话框边框样式,不带标题框
WS_VSCROLL - 有垂直滚动条
WS_HSCROLL - 有水平滚动条
WS_SYSMENU - 标题框上带有窗口菜单(须指定WS_CAPTION样式)
WS_THICKFRAME - 有可调边框(与WS_SIZEBOX样式相同)
WS_GROUP - 组样式,每个组的第一个控件具有WS_TABSTOP样式
WS_TABSTOP - 可接受TAB键焦点
WS_MINIMIZEBOX - 有最小化按钮
WS_MAXIMIZEBOX - 有最大化按钮
WS_OVERLAPPEDWINDOW - 具有层叠,标题框,系统菜单,可调边框,系统按钮
WS_POPUPWINDOW - 具有单边框,弹出式,系统菜单样式
*/
/* 窗口扩展样式参考列表:
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 - 分层或透明窗口,该样式可使用混合特效
WS_EX_NOINHERITLAYOUT - 子控件不继承窗体或控件的布局
WS_EX_LAYOUTRTL - 窗体或控件将具有从右向左的布局(因而会被镜像)
WS_EX_COMPOSITED - 用双缓冲从下到上绘制窗口的所有子孙(WinXP以上)
WS_EX_NOACTIVATE - 处于顶层但不激活
*/
/* 控件样式参考列表:
ES_LEFT - 左对齐
ES_CENTER - 居中对齐
ES_RIGHT - 右对齐
ES_MULTILINE - 多行
ES_UPPERCASE - 全部大写
ES_LOWERCASE - 全部小写
ES_PASSWORD - 密码框
ES_AUTOVSCROLL - 自动垂直滚动
ES_AUTOHSCROLL - 自动水平滚动
ES_NOHIDESEL - 始终显示选中部分
ES_OEMCONVERT - 允许ANSI和OEM互相转换
ES_READONLY - 只读
ES_WANTRETURN - 可接受回车换行
ES_NUMBER - 只接受数字输入
- Windows窗口风格详细解释
- Windows窗口风格详细解释
- Windows窗口风格详细解释
- 【转】windows窗口风格
- 窗口风格 (windows style)
- Windows窗口风格
- Windows窗口风格
- Windows窗口风格~Windows Style
- windows编程窗口风格总汇
- windows编程窗口风格总汇
- WINDOWS蓝屏代码详细解释
- 对窗口创建的详细解释
- Windows常见窗口样式和控件风格
- Windows常见窗口样式和控件风格
- WINDOWS下的窗口及风格
- Windows常见窗口样式和控件风格
- Windows常见窗口样式和控件风格
- Windows常见窗口样式和控件风格
- 山东理工大学ACM平台题答案 面向对象程序设计上机练习三(有默认参数的函数)1142
- Reverse Integer
- ${pageContext.request.contextPath} JSP取得绝对路径
- 黑马程序员----jdk1.5新特性
- STM32跳至硬件错误中断(HardFault_Handle)
- Windows窗口风格详细解释
- 断点续传,ibm那里拿来的文章,真心好,学习下
- 数据库缓存依赖命令 aspnet_regsql
- 多线程,socket,HTTP,ASIHttpRequest,等面试题总结集合
- 深究引用类型变量
- 一个PHP打印方法
- (字符串的映射与匹配7.3.13)UVA 10152 ShellSort(将初始序列转化成目标序列所需的最少次数,前提条件是:每一个元素只能移动栈顶)
- 64位引用32位导致“未能加载文件或程序集或它的某一个依赖项”的异常
- 为一条SQL语句生成AWR报告!