博瑞博客

青春是一个充满活力的季节,即便是我们失去了天使的翅膀,只要我们还有一颗青春的心,那么我们的生活依然能够如阳光般灿烂!......
推荐阅读站长精心推荐阅读
现在位置:首页 > C/C++
  • MFC窗口风格 WS_style/WS_EX_style(超详细)

    MFC窗口风格 WS_style/WS_EX_style(超详细)

    C/C++  2-24  20浏览  0评论  

    窗口风格(Window style) WS_BORDER 有边框窗口 WS_CAPTION 必须和WS_BORDER风格配合,但不能与WS_DLGFRAME风格一起使用。指示窗口包含标题要部分。 WS_CHILD 说明窗口为子窗口,不能应用于弹出式窗口风格(WS_POPUP)。 WS_CHILDWINDOW 同WS_CHILD。 WS_CLIPCHILDREN 绘制父窗口时,不绘制子窗口的裁剪区域。使用在建立父窗口时。 WS_CLIPSIBLINGS 剪裁相关的子窗口,这意味着,当一个特定的子窗口接收到重绘消息时,WS_CLIPSIBLINGS风格将在子窗口要重画的区域中去掉与其它子窗口重叠的部分。(如果没有指定WS_CLIPSIBLINGS风格,并且子窗口有重叠,当你在一个子窗口的客户区绘图时,它可能会画在相邻的子窗口的客户区中。)只与WS_CHILD风格一起使用。 WS_DISABLED 创建一个初始状态为禁止的窗口。 WS_DLGFRAME 创建一个窗口,具有双重边界,但是没有标题条。 WS_GROUP 指定一组控件中的第一个,用户可以用箭头键在这组控件中移动。在第一个控件后面把WS_GROUP风格设置为FALSE的控件都属于这一组。下一个具有WS_GROUP风格的控件将开始下一组(这意味着一个组在下一组的开始处结束)。 WS_HSCROLL 创建一个具有水平滚动条的窗口。 WS_ICONIC:创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。 WS_MAXIMIZE 创建一个最大化的窗口。 WS_MAXIMIZEBOX 创建一个具有最大化按钮的窗口。 WS_MINIMIZE 创建一个初始状态为最小化的窗口。仅与WS_OVERLAPPED风格一起使用。 WS_MINIMIZEBOX 创建一个具有最小化按钮的窗口。 WS_OVERLAPPED 创建一个重叠窗口。重叠窗口通常具有标题条和边界。 WS_OVERLAPPEDWINDOW 创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,WS_THICKFRAME,WS_MINIMIZEBOX和WS_MAXIMIZEBOX风格的重叠式窗口。 WS_POPUP 创建一个弹出式窗口,不能与WS_CHILD风格一起使用。 WS_POPUPWINDOW 创建一个具有WS_BORDER,WS_POPUP和WS_SYSMENU风格的弹出窗口。为了使控制菜单可见,必须与WS_POPUPWINDOW一起使用WS_CAPTION风格。 WS_SIZEBOX:创建一个可调边框的窗口,与WS_THICKFRAME风格相同。 WS_SYSMENU 创建一个在标题条上具有控制菜单的窗口。仅对带标题条的窗口使用。 WS_TABSTOP 指定了一些控件中的一个,用户可以通过TAB键来移过它。TAB键使用户移动到下一个用WS_TABSTOP风格定义的控件。 WS_THICKFRAME 创建一个具有厚边框的窗口,可以通过厚边框来改变窗口大小。 WS_TILED:产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格相同。 WS_TILEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,MS_THICKFRAME风格的窗口。 WS_VISIBLE 创建一个最初可见的窗口。 WS_VSCROLL 创建一个具有垂直滚动条的窗口。 扩展窗口风格(Extended window style) WS_EX_ACCEPTFILES 指明用这个风格创建的窗口能够接受拖放文件。 WS_EX_APPWINDOW - 当窗口可见时将一个顶层窗口放置在任务栏上。 WS_EX_CLIENTEDGE 指明窗口具有3D外观,这意味着,边框具有下沉的边界。 WS_EX_CONTEXTHELP 在窗口的标题条中包含问号。当用户单击问号时,鼠标光标的形状变为带指针的问号。如果用户随后单击一个子窗口,子窗口将接收到一个WM_HELP消息。 WS_EX_CONTROLPARENT 允许用户用TAB键遍历窗口的子窗口。 WS_EX_DLGMODALFRAME 指明一个具有双重边界的窗口,当你在dwStyle参数中指定了WS_CAPTION风格标志时,它可以具有标题条(可选)。 WS_EX_LEFT 指定窗口具有左对齐属性。这是缺省值。 WS_EX_LEFTSCROLLBAR 将垂直滚动条放在客户区的左边。 WS_EX_LTRREADING 按照从左到右的方式显示窗口文本。这是缺省方式。 WS_EX_MDICHILD 创建一个MDI子窗口。 WS_EX_NOPARENTNOTIFY 指定用这个风格创建的子窗口在被创建或销毁的时候将不向父窗口发送WM_PARENTNOTIFY消息。 WS_EX_OVERLAPPEDWINDOW 组合了WS_EX_CLIENTEDGE和WS_EX_WIND-OWEDGE风格。 WS_EX_PALETTEWINDOW 组合了WS_EX_WINDOWEDGE和WS_EX_TOPMOST风格。 WS_EX_RIGHT 赋予窗口右对齐属性。这与窗口类有关。 WS_EX_RIGHTSCROLLBAR 将垂直滚动条(如果有)放在客户区的右边。这是缺省方式。 WS_EX_RTLREADING 按照从右到左的顺序显示窗口文本。 WS_EX_STATICEDGE 创建一个具有三维边界的窗口,用于不接受用户输入的项。 WS_EX_TOOLWINDOW 创建一个工具窗口,目的是被用作浮动工具条。工具窗口具有标题条,比通常的标题条要短,窗口的标题是用小字体显示的。工具窗口不出现在任务条或用户按下ALT+TAB时出现的窗口中。 WS_EX_TOPMOST 指定用这个风格创建的窗口必须被放在所有非顶层窗口的上面,即使这个窗口已经不处于激活状态,它还是保留在最上面。应用程序可以用SetWindowsPos成员函数来加入或去掉这个属性。 WS_EX_TRANSPARENT 指定了用这个风格创建的窗口是透明的。这意味着,在这个窗口下面的任何窗口都不会被这个窗口挡住。用这个风格创建的窗口只有当它下面的窗口都更新过以后才接收WM_PAINT消息。 WS_EX_WINDOWEDGE 指定了具有凸起边框的窗口。 MFC 对话框不同风格(BY Icer) MFC对话框Border类型(None、Thin、Resizing、Dialog Frame)对应的部分属性 在运行中转换对话框类型需要用到的属性 Dialog Frame WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_CLIPSIBLINGS | DS_MODALFRAME WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE Thin 比Dialog Frame缺少一个扩展属性WS_EX_DLGMODALFRAME None 比Dialog Frame缺少WS_CAPTION | DS_MODALFRAME 比Dialog Frame缺少扩展属性WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE Resizing 比Dialog Frame多一个属性WS_THICKFRAME 控件 窗口样式 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 - 处于顶层但不激活 32770 IDD_DLG 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 - 有上下文帮助按钮 Edit 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 - 只接受数字输入 ToolbarWindow32 BTNS_BUTTON - 标准按钮 BTNS_SEP - 分隔条按钮 BTNS_CHECK - 按钮有选中和非选中两种状态,分别有不同的背景颜色 BTNS_GROUP - 指定一组按钮,与BTNS_CHECK样式一起使用,同组内的按钮互斥 BTNS_CHECKGROUP - 相当于BTNS_GROUP+BTNS_CHECK BTNS_DROPDOWN - 下拉按钮 BTNS_AUTOSIZE - 自动改变大小 BTNS_NOPREFIX - 不处理前缀字符(&) BTNS_SHOWTEXT - 显示按钮标题 BTNS_WHOLEDROPDOWN - 按钮有下拉箭头 TBSTYLE_TOOLTIPS - 允许出现提示窗口 TBSTYLE_WRAPABLE - 当工具栏太窄一行放不下时,工具栏按钮可换行 TBSTYLE_ALTDRAG - 允许按住ALT键的同时拖动按钮来更改按钮位置 TBSTYLE_FLAT - 平面工具栏,即工具栏和按钮都是透明的 TBSTYLE_LIST - 平面工具栏并且文字在位图右侧,须在显示前设置 TBSTYLE_CUSTOMERASE - 处理删除背景消息时生成NM_CUSTOMDRAW消息 TBSTYLE_REGISTERDROP - 鼠标经过按钮时生成通知消息以请求放置目标对象 TBSTYLE_TRANSPARENT - 透明工具栏,工具栏是透明的,但按钮不是 TBSTYLE_EX_DRAWDDARROWS - 有分隔条的下拉按钮 TBSTYLE_EX_MIXEDBUTTONS - 混合按钮 TBSTYLE_EX_HIDECLIPPEDBUTTONS - 隐藏部分省略的按钮 TBSTYLE_EX_DOUBLEBUFFER - 双缓冲机制(检测ToolBar是否改变)(WinXP以上) CCS_TOP - 顶部对齐(工具栏控件缺省值) CCS_NOMOVEY - 可以水平移动和改变大小(如指定了CCS_NORESIZE则无效) CCS_BOTTOM - 底部对齐(状态栏控件缺少值) CCS_NORESIZE - 禁止改变大小 CCS_NOPARENTALIGN - 禁止自动移动到父窗口的顶部或底部 CCS_ADJUSTABLE - 允许工具栏内置的定制按钮功能 CCS_NODIVIDER - 不在控件顶部画高亮线 CCS_VERT - 垂直显示 CCS_LEFT - 垂直并居左显示 CCS_RIGHT - 垂直并居右显示 CCS_NOMOVEX - 可以垂直移动和改变大小(如指定了CCS_NORESIZE则无效) Static SS_LEFT - 左对齐 SS_CENTER - 居中对齐 SS_RIGHT - 右对齐 SS_ICON - 显示为图标 SS_BLACKRECT - 黑色矩形 SS_GRAYRECT - 灰色矩形 SS_WHITERECT - 白色矩形 SS_BLACKFRAME - 黑色边框 SS_GRAYFRAME - 灰色边框 SS_WHITEFRAME - 白色边框 SS_USERITEM - 用户定义 SS_SIMPLE - 指定一个简单矩形并在矩形中显示一行文字 SS_LEFTNOWORDWRAP - 左对齐,文字不换行,超过部分省略 SS_OWNERDRAW - 允许自画,该控件可接受 WM_DRAWITEM 消息 SS_BITMAP - 显示为位图 SS_ENHMETAFILE - 显示为增强图元文件(WMF) SS_ETCHEDHORZ - 用 EDGE_ETCHED 样式绘制上下边框 SS_ETCHEDVERT - 用 EDGE_ETCHED 样式绘制左右边框 SS_ETCHEDFRAME - 用 EDGE_ETCHED 样式绘制四周边框 SS_REALSIZECONTROL - 图像随控件缩放 SS_NOPREFIX - 不处理前缀字符(&) SS_NOTIFY - 单击或双击时通知父窗口 SS_CENTERIMAGE - 图像居中 SS_RIGHTJUST - SS_BITMAP或SS_ICON样式改变大小时右边界不动 SS_REALSIZEIMAGE - 图像不缩放,超过部分省略 SS_SUNKEN - 凹边框 SS_ENDELLIPSIS - 结尾超出范围的字符串将省略,若超出限制后面不加圆点. SS_PATHELLIPSIS - 尽可能保留'\'后的文字.并在'\'前插入圆点 SS_WORDELLIPSIS - 任何超出范围的字都要被省略并加三个圆点 Button IDC_GRP BS_PUSHBUTTON - 按下弹起 BS_DEFPUSHBUTTON - 带默认的按钮 BS_CHECKBOX - 复选框 BS_AUTOCHECKBOX - 自动改变状态的复选框 BS_RADIOBUTTON - 单选框 BS_3STATE - 三态复选框(选中,非选中,灰色) BS_AUTO3STATE - 自动改变状态的三态复选框 BS_GROUPBOX - 组框 BS_USERBUTTON - 此样式只为兼容16位Windows,已由BS_OWNERDRAW代替 BS_AUTORADIOBUTTON - 自动改变状态的单选按钮 BS_OWNERDRAW - 允许自画, 使其接受 WM_DRAWITEM 消息 BS_LEFTTEXT - 文字在左边 BS_TEXT - 文字标题 BS_ICON - 带图标 BS_BITMAP - 带位图 BS_LEFT - 左对齐 BS_RIGHT - 右对齐 BS_CENTER - 居中对齐 BS_TOP - 文字靠上 BS_BOTTOM - 文字靠下 BS_VCENTER - 文字垂直居中 BS_PUSHLIKE - 类似按下弹起 BS_MULTILINE - 多行文字 BS_NOTIFY - 允许将焦点消息通知父窗口 BS_FLAT - 平面 BS_RIGHTBUTTON - 按钮在右面,相当于BS_LEFTTEXT ComboBox CBS_SIMPLE - 不显示下拉按钮,总是显示列表框 CBS_DROPDOWN - 类似CBS_SIMPLE,只是在未点击下拉按钮以前不显示下拉列表 CBS_DROPDOWNLIST - 类似CBS_DROPDOWN,但不可以更改文本内容 CBS_OWNERDRAWFIXED - 允许自画,但行高一致 CBS_OWNERDRAWVARIABLE - 允许自画,行高可以不一致 CBS_AUTOHSCROLL - 自动滚动文本 CBS_OEMCONVERT - 允许OEM字符集转换 CBS_SORT - 自动按字母排序 CBS_HASSTRINGS - 指定自画样式的ComboBox包含的项目由字符串组成 CBS_NOINTEGRALHEIGHT - 组合框的大小可以不是项目大小的整数倍 CBS_DISABLENOSCROLL - 总是显示垂直滚动条 CBS_UPPERCASE - 全部大写 CBS_LOWERCASE - 全部小写 ScrollBar SBS_HORZ - 水平滚动条 SBS_VERT - 垂直滚动条 SBS_TOPALIGN - 在指定区域内顶对齐 SBS_LEFTALIGN - 在指定区域内左对齐 SBS_BOTTOMALIGN - 在指定区域内底对齐 SBS_RIGHTALIGN - 在指定区域内右对齐 SBS_SIZEBOXTOPLEFTALIGN - 带有大小框,左上对齐 SBS_SIZEBOXBOTTOMRIGHTALIGN - 带有大小框,右下对齐 SBS_SIZEBOX - 带有大小框 SBS_SIZEGRIP - 类似SBS_SIZEBOX,但有凸起的边框 SysTabControl32 TCS_SCROLLOPPOSITE - 选择一个选项卡时不需要滚动对边 TCS_BOTTOM - 选项卡在底部 TCS_RIGHT - 选项卡在右边 TCS_MULTISELECT - 允许多选 TCS_FLATBUTTONS - 平面按钮样式, 四周没有边框 TCS_FORCEICONLEFT - 强制图标在左边 TCS_FORCELABELLEFT - 强制标签在左边 TCS_HOTTRACK - 允许热点选择 TCS_VERTICAL - 选项卡在左边并且文字垂直显示 TCS_TABS - 选项卡样式, 四周有边框, 缺省样式 TCS_BUTTONS - 按钮样式, 四周没有边框 TCS_SINGLELINE - 单行显示 TCS_MULTILINE - 多行显示 TCS_RIGHTJUSTIFY - TCS_FIXEDWIDTH - 选项卡宽度固定 TCS_RAGGEDRIGHT - 不允许拉伸选项卡以适应宽度 TCS_FOCUSONBUTTONDOWN - 点击时获取焦点 TCS_OWNERDRAWFIXED - 父窗口负责画出选项卡 TCS_TOOLTIPS - 允许出现提示信息窗口 TCS_FOCUSNEVER - 点击时不获取焦点 TCS_EX_FLATSEPARATORS - 平面分隔条 TCS_EX_REGISTERDROP - 注册拖放通知事件, 使用前须初始化OLE ListBox LBS_NOTIFY - 双击鼠标时通知父窗口 LBS_SORT - 自动按字母排序 LBS_NOREDRAW - 当改变时不重画 LBS_MULTIPLESEL - 允许多项选择 LBS_OWNERDRAWFIXED - 允许自画,但行高一致 LBS_OWNERDRAWVARIABLE - 允许自画,行高可不一致 LBS_HASSTRINGS - 指定自画样式的ListBox包含的项目由字符串组成 LBS_USETABSTOPS - 可接受TAB键焦点 LBS_NOINTEGRALHEIGHT - 列表框的大小可以不是项目大小的整数倍 LBS_MULTICOLUMN - 允许多列 LBS_WANTKEYBOARDINPUT - 拥有焦点且有按键时拥有者接收WM_VKEYTOITEM消息 LBS_EXTENDEDSEL - 允许使用Shift键多选 LBS_DISABLENOSCROLL - 总是显示垂直滚动条 LBS_NODATA - 无数据模式(必须指定LBS_OWNERDRAWFIXED) LBS_NOSEL - 失去焦点时隐藏所选项 LBS_STANDARD - 标准样式:按字母排序,允许通知父窗口,有边框 msctls_progress32 PBS_SMOOTH - 平滑的滚动条(不是缺省的分段滚动条) PBS_VERTICAL - 垂直方向 msctls_updown32 UDS_WRAP - 递增和递减如果超过边界则循环 UDS_SETBUDDYINT - 值改变时设置关联窗口的文本 UDS_ALIGNRIGHT - 位置在关联窗口的右边 UDS_ALIGNLEFT - 位置在关联窗口的左边 UDS_AUTOBUDDY - 自动选择上一个窗口为关联窗口 UDS_ARROWKEYS - 响应键盘的上下键 UDS_HORZ - 水平显示 UDS_NOTHOUSANDS - 不显示千位分隔符(',') UDS_HOTTRACK - 允许热点选择 msctls_trackbar32 TBS_AUTOTICKS - 自动出现刻度 TBS_VERT - 垂直方向 TBS_HORZ - 水平方向 TBS_TOP - 刻度在上方 TBS_BOTTOM - 刻度在下方 TBS_LEFT - 刻度在左边 TBS_RIGHT - 刻度在右边 TBS_BOTH - 两边都有刻度 TBS_NOTICKS - 隐藏刻度 TBS_ENABLESELRANGE - 允许区域选择 TBS_FIXEDLENGTH - 滑动长度固定 TBS_NOTHUMB - 隐藏滑动块 TBS_TOOLTIPS - 允许提示窗口显示当前进度 TBS_REVERSED - 保留 TBS_DOWNISLEFT - 下=左,上=右(缺省是下=右,上=左) SysDateTimePick32 DTS_UPDOWN - 右边显示上下按钮(缺省显示为组合框),运行时不可更改 DTS_SHOWNONE - 在左侧显示一个复选框(允许没有选择) DTS_SHORTDATEFORMAT - 短日期格式(年份为4位数) DTS_LONGDATEFORMAT - 长日期格式(年份为4位数) DTS_TIMEFORMAT - 显示时间(缺省为显示日期) DTS_SHORTDATECENTURYFORMAT - 短日期格式 DTS_APPCANPARSE - 允许拥有者解析用户输入动作 DTS_RIGHTALIGN - 下拉框右对齐 SysTreeView32 TVS_HASBUTTONS - 在父项目前显示+号或-号 TVS_HASLINES - 显示项目间的连线 TVS_LINESATROOT - 根节点前显示+号或-号(忽略TVS_HASLINES样式) TVS_EDITLABELS - 允许编辑标签(类似资源管理器的文件更名) TVS_DISABLEDRAGDROP - 禁止拖放 TVS_SHOWSELALWAYS - 始终显示所选中项(包括失去焦点时) TVS_RTLREADING - 从右到左阅读 TVS_NOTOOLTIPS - 不出现提示信息窗口 TVS_CHECKBOXES - 在各项目前面显示复选框 TVS_TRACKSELECT - 允许热点选择 TVS_SINGLEEXPAND - 按Ctrl键多选时鼠标点击仍然展开该项目 TVS_INFOTIP - 允许发送TVM_SETITEMHEIGHT消息获得信息 TVS_FULLROWSELECT - 允许选择整行 TVS_NOSCROLL - 隐藏滚动条 TVS_NONEVENHEIGHT - 设置项目高度为奇数 SysListView32 LVS_ICON - 大图标 LVS_REPORT - 详细资料 LVS_SMALLICON - 小图标 LVS_LIST - 列表 LVS_SINGLESEL - 只能单选 LVS_SHOWSELALWAYS - 始终显示所选中项(包括失去焦点时) LVS_SORTASCENDING - 按升序排序 LVS_SORTDESCENDING - 按降序排序 LVS_SHAREIMAGELISTS - 共享图像列表(当控件销毁时图像列表仍可用) LVS_NOLABELWRAP - 文字不换行 LVS_AUTOARRANGE - 自动排列 LVS_EDITLABELS - 允许编辑标签(类似资源管理器的文件更名) LVS_OWNERDATA - 指定一个虚拟的ListView, 由用户自己管理Item数据 LVS_NOSCROLL - 禁止滚动条(对LVS_LIST和LVS_REPORT样式不适用) LVS_ALIGNTOP - 顶端对齐 LVS_ALIGNLEFT - 左对齐 LVS_OWNERDRAWFIXED - 允许自画(仅详细资料模式) LVS_NOCOLUMNHEADER - 详细资料模式时不显示列头 LVS_NOSORTHEADER - 列头显示为平面,不响应鼠标点击(详细资料模式) LVS_EX_GRIDLINES - 显示表格线(仅详细资料模式) LVS_EX_SUBITEMIMAGES - 允许子项目显示图像(仅详细资料模式) LVS_EX_CHECKBOXES - 在各项目前面显示复选框 LVS_EX_TRACKSELECT - 允许热点选择 LVS_EX_HEADERDRAGDROP - 允许通过拖放列头来重新安排各列(详细资料模式) LVS_EX_FULLROWSELECT - 允许选择整行(仅详细资料模式) LVS_EX_ONECLICKACTIVATE - 单击项目激活 LVS_EX_TWOCLICKACTIVATE - 双击项目激活 LVS_EX_FLATSB - 平面滚动条 LVS_EX_REGIONAL - 项目范围只包括图标不透明区域和文字区域(大图标模式) LVS_EX_INFOTIP - 将提示信息窗口的消息通知父窗口 LVS_EX_UNDERLINEHOT - 带热点的项目文字带下划线 LVS_EX_UNDERLINECOLD - 非热点的项目文字带下划线 LVS_EX_MULTIWORKAREAS - 多个工作区(需在没有添加项目前设置) LVS_EX_LABELTIP - 如果没有提示信息文本就展开隐藏的标签 LVS_EX_BORDERSELECT - 用选择边框的样式代替高亮 LVS_EX_DOUBLEBUFFER - 双缓冲(WinXP以上) LVS_EX_HIDELABELS - 隐藏标签(WinXP以上) LVS_EX_SINGLEROW - 显示单行(WinXP以上) LVS_EX_SNAPTOGRID - 图标自动对齐到表格(WinXP以上) LVS_EX_SIMPLESELECT - (WinXP以上) SysMonthCal32 MCS_DAYSTATE - 允许发送MCN_GETDAYSTATE通知获取日期状态 MCS_MULTISELECT - 允许多选 MCS_WEEKNUMBERS - 在左侧显示周数 MCS_NOTODAYCIRCLE - 不在今天的日期上显示一个圆圈 MCS_NOTODAY - 不显示今天 RichEdit20A 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 - 只接受数字输入 ES_SAVESEL - ES_SUNKEN - ES_DISABLENOSCROLL - ES_SELECTIONBAR - ES_NOOLEDRAGDROP - ENM_NONE - ENM_CHANGE - ENM_UPDATE - ENM_SCROLL - ENM_KEYEVENTS - ENM_MOUSEEVENTS - ENM_REQUESTRESIZE - ENM_SELCHANGE - ENM_DROPFILES - ENM_PROTECTED - ENM_CORRECTTEXT - ENM_SCROLLEVENTS - ENM_DRAGDROPDONE - ENM_IMECHANGE - ENM_LANGCHANGE - ENM_OBJECTPOSITIONS - ENM_LINK - SysAnimate32 ACS_CENTER - 居中显示 ACS_TRANSPARENT - 透明 ACS_AUTOPLAY - 自动播放 ACS_TIMER - 使用内部定时器控制(不使用线程) SysHeader32 HDS_HORZ - 水平显示 HDS_VERT - 垂直显示 HDS_BUTTONS - 按钮样式,可响应鼠标点击 HDS_HOTTRACK - 允许热点选择 HDS_HIDDEN - 使其高度为0,类似隐藏的效果,非真正隐藏 HDS_DRAGDROP - 允许通过拖放列头来重新安排各列 HDS_FULLDRAG - 拖动时显示列头内容 HDS_FILTERBAR - 包含一个过滤栏 HDS_FLAT - 平面样式,不响应鼠标点击(WinXP以上) 分类: 其他

  • UTF-16LE 和 UTF-16BE

    UTF-16LE 和 UTF-16BE

    C/C++  2-5  38浏览  0评论  

    UTF-16LE 和 UTF-16BE 都是双字节编码,但它们的主要区别在于字节顺序(即字节的排列顺序)。 UTF-16 的基本特性 双字节编码: UTF-16 使用 2个字节(16位) 来表示一个字符。 对于超出基本多语言平面(BMP,即 U+0000 到 U+FFFF)的字符,UTF-16 使用 4个字节(代理对,Surrogate Pair) 来表示。 字节顺序: UTF-16 有两种字节顺序: UTF-16LE(Little Endian):低字节在前,高字节在后。 UTF-16BE(Big Endian):高字节在前,低字节在后。 UTF-16LE 和 UTF-16BE 的区别 1. UTF-16LE(Little Endian) 字节顺序:低字节在前,高字节在后。 例如,字符 A(Unicode 码点 U+0041)的编码为: 低字节:0x41 高字节:0x00 存储顺序:0x41 0x00 2. UTF-16BE(Big Endian) 字节顺序:高字节在前,低字节在后。 例如,字符 A(Unicode 码点 U+0041)的编码为: 高字节:0x00 低字节:0x41 存储顺序:0x00 0x41 BOM(字节顺序标记) UTF-16 文件通常以 BOM(Byte Order Mark) 开头,用于指示字节顺序: UTF-16LE 的 BOM 是 0xFF 0xFE。 UTF-16BE 的 BOM 是 0xFE 0xFF。 如果没有 BOM,则需要通过其他方式推断字节顺序。 示例 以下是一个简单的示例,展示 UTF-16LE 和 UTF-16BE 的编码差异: 字符:A(Unicode 码点 U+0041) UTF-16LE:0x41 0x00 UTF-16BE:0x00 0x41 字符:汉(Unicode 码点 U+6C49) UTF-16LE:0x49 0x6C UTF-16BE:0x6C 0x49 总结 UTF-16LE 和 UTF-16BE 都是双字节编码,但它们的字节顺序相反。 对于超出 BMP 的字符(如 Emoji),UTF-16 使用 4 个字节(代理对)表示。 通过 BOM 可以区分 UTF-16LE 和 UTF-16BE。 希望这个解释能帮助你更好地理解 UTF-16LE 和 UTF-16BE 的区别!如果还有其他问题,欢迎随时提问!

  • C++ std

    C++ std

    C/C++  2-4  72浏览  0评论  

    C++ 标准库(std 库)是 C++ 语言的核心组成部分,提供了丰富的功能,包括容器、算法、字符串处理、输入输出、多线程支持等。std 是标准库的命名空间,所有标准库的类和函数都定义在这个命名空间中。 以下是 C++ 标准库的主要组成部分和功能的详细介绍: 1. 容器(Containers) 容器是用于存储数据的类模板,提供了多种数据结构。 顺序容器 std::vector:动态数组,支持快速随机访问。 std::array:固定大小的数组,封装了 C 风格数组。 std::deque:双端队列,支持快速头尾插入和删除。 std::list:双向链表,支持高效插入和删除。 std::forward_list:单向链表,内存占用更小。 关联容器 std::set:有序集合,元素唯一。 std::multiset:有序集合,允许重复元素。 std::map:有序键值对,键唯一。 std::multimap:有序键值对,允许重复键。 无序容器(C++11 引入) std::unordered_set:哈希集合,元素唯一。 std::unordered_multiset:哈希集合,允许重复元素。 std::unordered_map:哈希键值对,键唯一。 std::unordered_multimap:哈希键值对,允许重复键。 2. 算法(Algorithms) 算法是用于操作容器中数据的函数模板,定义在 <algorithm> 头文件中。 常用算法 std::sort:对容器中的元素进行排序。 std::find:查找容器中的元素。 std::copy:复制容器中的元素。 std::transform:对容器中的元素进行转换。 std::accumulate:计算容器中元素的累加值。 std::for_each:对容器中的每个元素执行操作。 示例 #include <algorithm> #include <vector> #include <iostream> int main() { std::vector<int> vec = {5, 3, 1, 4, 2}; std::sort(vec.begin(), vec.end()); // 排序 for (int x : vec) { std::cout << x << " "; // 输出:1 2 3 4 5 } return 0; } 3. 字符串处理(Strings) std::string 是用于处理字符串的类,定义在 <string> 头文件中。 常用功能 std::string:表示一个字符串。 std::wstring:表示一个宽字符字符串。 std::to_string:将数值转换为字符串。 std::stoi、std::stol、std::stoll:将字符串转换为整数。 std::stof、std::stod、std::stold:将字符串转换为浮点数。 示例 #include <string> #include <iostream> int main() { std::string str = "Hello, World!"; std::cout << str.substr(0, 5) << std::endl; // 输出:Hello return 0; } 4. 输入输出(Input/Output) C++ 标准库提供了强大的输入输出功能,定义在 <iostream> 头文件中。 常用类 std::cin:标准输入流。 std::cout:标准输出流。 std::cerr:标准错误流。 std::ifstream:文件输入流。 std::ofstream:文件输出流。 std::stringstream:字符串流。 示例 #include <iostream> #include <fstream> int main() { std::ofstream file("test.txt"); file << "Hello, File!" << std::endl; file.close(); std::ifstream inFile("test.txt"); std::string line; std::getline(inFile, line); std::cout << line << std::endl; // 输出:Hello, File! return 0; } 5. 智能指针(Smart Pointers) 智能指针用于自动管理动态内存,定义在 <memory> 头文件中。 常用智能指针 std::unique_ptr:独占所有权的智能指针。 std::shared_ptr:共享所有权的智能指针。 std::weak_ptr:弱引用智能指针,用于解决循环引用问题。 示例 #include <memory> #include <iostream> int main() { std::unique_ptr<int> ptr = std::make_unique<int>(42); std::cout << *ptr << std::endl; // 输出:42 return 0; } 6. 多线程支持(Multithreading) C++11 引入了多线程支持,定义在 <thread> 头文件中。 常用类 std::thread:表示一个线程。 std::mutex:互斥锁,用于线程同步。 std::lock_guard:RAII 风格的互斥锁管理。 std::condition_variable:条件变量,用于线程间通信。 示例 #include <thread> #include <iostream> void task() { std::cout << "Hello from thread!" << std::endl; } int main() { std::thread t(task); t.join(); // 等待线程结束 return 0; } 7. 时间处理(Chrono) std::chrono 是用于时间处理的库,定义在 <chrono> 头文件中。 常用功能 std::chrono::system_clock:系统时钟。 std::chrono::steady_clock:稳定时钟。 std::chrono::duration:表示时间间隔。 std::chrono::time_point:表示时间点。 示例 #include <chrono> #include <thread> #include <iostream> int main() { auto start = std::chrono::steady_clock::now(); std::this_thread::sleep_for(std::chrono::seconds(1)); auto end = std::chrono::steady_clock::now(); std::cout << "Elapsed time: " << std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() << " ms" << std::endl; return 0; } 8. 其他功能 std::function:用于存储可调用对象(函数、Lambda 表达式等)。 std::tuple:用于存储多个不同类型的值。 std::optional(C++17):表示一个可能不存在的值。 std::variant(C++17):表示一个可以存储多种类型的值。 总结 C++ 标准库(std 库)提供了丰富的功能,涵盖了容器、算法、字符串处理、输入输出、智能指针、多线程、时间处理等方面。它是 C++ 开发中不可或缺的工具,能够显著提高开发效率和代码质量。 如果你对某个部分特别感兴趣,可以告诉我,我会提供更详细的解释和示例! 😊

  • LOGFONT

    LOGFONT

    C/C++  1-25  67浏览  0评论  

    LOGFONT lf; ZeroMemory(&lf, sizeof(LOGFONT)); lf.lfHeight = 20; // 字体大小 lf.lfWidth = 0; lf.lfEscapement = 0; lf.lfOrientation = 0; lf.lfWeight = FW_NORMAL; // 字体粗细 lf.lfItalic = FALSE; // 是否斜体 lf.lfUnderline = FALSE; // 是否下划线 lf.lfStrikeOut = FALSE; // 是否删除线 lf.lfCharSet = DEFAULT_CHARSET; // 字符集 lf.lfOutPrecision = OUT_DEFAULT_PRECIS; lf.lfClipPrecision = CLIP_DEFAULT_PRECIS; lf.lfQuality = DEFAULT_QUALITY; lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; lstrcpy(lf.lfFaceName, _T("Arial")); // 字体名称 ‌fClipPrecision‌是LOGFONT结构中的一个字段,用于指定剪辑精度。它定义了当字符的一部分超过剪辑区域时对字符的剪辑方式。在Windows字体设置中,fClipPrecision的值决定了字符的剪辑方式,确保字符的显示不会超出指定的区域‌ 具体来说,fClipPrecision字段有以下几种可能的值: 常量 说明 CLIP_DEFAULT‌ 使用系统的默认剪辑方式。 ‌CLIP_CHARACTER_OUTLINE‌ 剪辑字符的轮廓,确保字符不会超出剪辑区域。 ‌CLIP_STROKE‌ 剪辑字符的轮廓和边缘,适用于需要更精确控制字符显示的情况。 ‌CLIP_EMBEDDED‌ 将字符嵌入到剪辑区域中,确保字符完全在区域内显示。 ‌CLIP_LH_ANGLES‌ 根据字符的基线角度进行剪辑,适用于特定方向的文本显示需求。

  • ImmGetConversionStatus 函数(imm.h)

    ImmGetConversionStatus 函数(imm.h)

    C/C++  1-25  56浏览  0评论  

    检索当前转换状态。 BOOL ImmGetConversionStatus( HIMC unnamedParam1, [out, optional] LPDWORD lpfdwConversion, [out, optional] LPDWORD lpfdwSentence ); 参数 unnamedParam1 [out, optional] lpfdwConversion 指向变量的指针,函数在该变量中检索转换模式值的组合。 有关详细信息,请参阅 输入法转换模式值。 [out, optional] lpfdwSentence 指向函数检索句子模式值的变量的指针。 有关详细信息,请参阅 输入法句子模式值。 返回值 如果成功,则返回非零值,否则返回 0。 注解 仅当 IME 支持这些模式时,才会设置转换和句子模式值。 https://learn.microsoft.com/zh-cn/windows/win32/api/imm/nf-imm-immgetconversionstatus

  • ImmSetConversionStatus 函数 (imm.h)

    ImmSetConversionStatus 函数 (imm.h)

    C/C++  1-25  60浏览  0评论  

    设置当前转换状态。 BOOL ImmSetConversionStatus( [in] HIMC unnamedParam1, [in] DWORD unnamedParam2, [in] DWORD unnamedParam3 ); 参数 [in] unnamedParam1 输入上下文的句柄。 [in] unnamedParam2 转换模式值。 有关详细信息,请参阅 IME 转换模式值。 [in] unnamedParam3 句子模式值。 有关详细信息,请参阅 IME 句子模式值。 返回值 如果成功,则返回非零值,否则返回 0。 https://learn.microsoft.com/zh-cn/windows/win32/api/imm/nf-imm-immsetconversionstatus

  • 输入法句子模式值

    输入法句子模式值

    C/C++  1-25  50浏览  0评论  

    这些值与 ImmGetConversionStatus 和 ImmSetConversionStatus 函数一起使用。 常数 定义 IME_SMODE_AUTOMATIC IME 在自动模式下执行转换处理。 IME_SMODE_NONE 没有句子信息。 IME_SMODE_PHRASEPREDICT IME 使用短语信息来预测下一个字符。 IME_SMODE_PLURALCLAUSE IME 使用复数子句信息来执行转换处理。 IME_SMODE_SINGLECONVERT IME 在单字符模式下执行转换处理。 IME_SMODE_CONVERSATION 输入法使用对话模式。 这对于聊天应用程序很有用。 16 到 31 位保留供输入法使用。

  • IME 转换模式值

    IME 转换模式值

    C/C++  1-25  45浏览  0评论  

    这些值与 ImmGetConversionStatus 和 ImmSetConversionStatus 函数一起使用。 bit 含义 IME_CMODE_ALPHANUMERIC 字母数字输入模式。 这是默认设置,定义为 0x0000。 IME_CMODE_CHARCODE 如果字符代码输入模式,则设置为 1;如果不是,则为 0。 IME_CMODE_EUDC 如果 EUDC 转换模式,则设置为 1;如果不是,则为 0。 IME_CMODE_FIXED Windows Me/98、Windows 2000、Windows XP: 如果固定转换模式,则设置为 1;如果不是,则为 0。 IME_CMODE_FULLSHAPE 如果全形状模式,则设置为 1;如果半形状模式,则为 0。 IME_CMODE_HANJACONVERT 如果 HANJA 转换模式,则设置为 1;如果不是,则为 0。 IME_CMODE_KATAKANA 如果片假名模式,则设置为 1;如果平假名模式,则为 0。 IME_CMODE_NATIVE 如果 NATIVE 模式,则设置为 1;如果 ALPHANUMERIC 模式,则为 0。 IME_CMODE_NOCONVERSION 设置为 1 可阻止 IME 处理转换;如果不是,则为 0。 IME_CMODE_ROMAN 如果 ROMAN 输入模式,则设置为 1;如果不是,则为 0。 IME_CMODE_SOFTKBD 如果软键盘模式,则设置为 1;如果不是,则为 0。 IME_CMODE_SYMBOL 如果 SYMBOL 转换模式,则设置为 1;如果不是,则为 0。 所有其他位是保留的。

  • c/c++ socket函数详解

    c/c++ socket函数详解

    C/C++  10-22  572浏览  0评论  

    注意:  使用socketAPI前,要先将相关链接库(Ws2_32.lib)加入链接,并使用WSAStartUp函数初始化。 在linux中地址结构体sockaddr的结构与windows的不太一样,具体请百度 每个socket函数都可能失败(返回-1),需要判断结果 socket分成两种: 一种专门用来监听新链接(或新活动),这种socket叫做master socket,一般只存在于服务器 一种专门用来收发数据,这种socket叫做connected socket,客户端和服务器都存在 int socket(int af,int type,int protocol); // 建立一个socket用于连接 af:address family,如AF_INET type:连接类型,通常是SOCK_STREAM或SOCK_DGRAM protocol:协议类型,通常是IPPROTO_TCP或IPPROTO_UDP // 返回值:socket的编号,为-1表示失败 int bind(int socket,sockaddr * address,uint addrlen); // 将一个地址和一个端口号绑定到一个socket连接上 // socket:之前创建的socket // sockaddr:一个用来存放Ip地址和端口号的结构体 // addrlen:上述结构体的长度 // 返回值:为-1表示失败,若端口被占用,会从新绑定一个随机端口(仍返回失败) // 地址绑定为0表示绑定本机所有IP int sendto(int socket,char * buf,uint buflen,int flag,sockaddr * address,uint addrlen);【仅UDP】 // 向一个指定的地址发送缓冲区内指定长度的消息 // socket:之前创建的socket // buf:要发送的缓冲区 // buflen:要发送的长度 // flag:一般为0 // sockaddr:目标地址 // addrlen:上述结构体的长度 // 返回值:发送出去的长度 int recvfrom(int socket,char * buf,uint buflen,int flag,sockaddr * fromaddr,int * addrlen);【阻塞】【仅UDP】 // 接收消息,可以获取发送方的地址 // fromaddr:发送方地址(输出参数) // addrlen:发送方地址结构体的长度(输入输出参数) // 返回值:>0表示收到的字节数,=0表示连接被关闭,-1表示出错 int recv(int socket,char * buf,uint buflen,int flag);【阻塞】 // UDP时:接收任何一个发送到该socket的消息(无法获取发送方地址) // TCP时:接收一个已连接的socket (connected socket)发送的信息 // socket:UDP时,为之前创建的socket,TCP时,为connected socket // buf:接收的缓冲区 // buflen:缓冲区的长度 // flag:一般为0 // 返回值:>0表示收到的字节数,=0表示连接被关闭,-1表示出错 // 注意:对于TCP,请确保socket是已连接的,因为只有已连接的socket会阻塞此函数 // 该函数实际上是从缓冲区取指定长度的数据,如果缓冲区没有数据,则会阻塞;如果没有取完,则下次使用此函数的时候不会阻塞 // 应注意:当一次无法获得对方发送的全部数据,在数据不完整的时候,程序可能无法向下执行,可以考虑将数据放在缓冲区中,等数据全部接收完成的时候再使用 int getsockname(int socket,sockaddr * address,int * addrlen); // 获取指定socket上绑定的IP、端口信息(不能获取connected socket上的地址信息) // address:socket上绑定的地址(输出参数) // addrlen:socket上绑定的地址结构体的长度(输入输出参数) int getpeername(int socket,,sockaddr * address,int * addrlen);【仅TCP】 // 获取一个已连接的socket的地址、端口信息 // 参数含义同上 struct sockaddr_in 一个用来指定IP地址和端口号的结构体(不太好用,建议将其封装)   family // 即address family,如AF_INET   port // 端口号(注意要按位倒序,使用htons函数)   sin_addr.S_un.S_addr // 一个为long类型的ip地址 该结构体所有成员的字序为网络字序,低字节在前,高字节在后 int listen(int socket,int maxconn);【仅TCP】【服务器】 // 将一个socket设置为监听状态,专门用来监听的socket叫做master socket // maxconn:最大接收连接数 // 返回值:失败返回-1,成功返回0 int accept(int socket,sockaddr * fromaddr,int * addrlen);【阻塞】【仅TCP】【服务器】 // 接收一个客户机的连接,返回一个socket,来自客户机的socket叫connected socket // socket:用来监听的socket(master socket) // fromaddr:客户机的地址信息 // addrlen:地址结构体的长度(输入输出参数) // 返回值:返回一个新的socket,这个socket专门用来与此客户机通讯(connected socket) int connect(int socket,sockaddr * addr,int addrlen);【仅TCP】【客户端】 // 使用当前socket连接一个地址(与服务器建立正式连接),此函数会触发服务器端的accept、select函数 // 注意:服务端接收的socket值和客户端socket值不一样 // addr:一般是服务器地址 int send(int socket,char * buf,char buflen,int flag);【仅TCP】 // 向一个已连接的socket发送信息,这个socket应该是connected socket(非master socket) int closesocket(int socket); // 关闭一个已存在的socket【正常关闭】 // 失败返回-1,成功返回0 UDP通讯流程 WSAStartup() socket() bind() sendto(connected socket)/recv()/recvfrom() TCP通讯流程(服务器): WSAStartup() socket() bind() listen() accept() send()/recv() TCP通讯流程(客户端): WSAStartup() socket() bind() connect() send()/recv()

  • CreateWindowEx和CreateWindow的区别

    CreateWindowEx和CreateWindow的区别

    C/C++  6-24  624浏览  0评论  

    CreateWindowEx 函数功能:该函数创建一个具有扩展风格的重叠式窗口、弹出式窗口或子窗口,其他与 CreateWindow函数相同。关于创建窗口和其他参数的内容,请参看CreateWindowEx。 函数原型:HWND CreateWindowEx(DWORD dwExStle,LPCTSTR IpClassName,LPCTSTR lpWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hWndParent,HMENUhMenu,HANDLE hlnstance,LPVOIDlpParam); 参数: dwExStyle:指定窗口的扩展风格。该参数可以是下列值: WS_EX_ACCEPTFILES:指定以该风格创建的窗口接受一个拖拽文件。 WS_EX_APPWINDOW:当窗口可见时,将一个顶层窗口放置到任务条上。 WS_EX_CLIENTEDGE:指定窗口有一个带阴影的边界。 WS_EX_CONTEXTHELP:在窗口的标题条包含一个问号标志。当用户点击了问号时,鼠标光标变为一个问号的指针、如果点击了一个子窗口,则子窗日接收到WM_HELP消息。子窗口应该将这个消息传递给父窗口过程,父窗口再通过HELP_WM_HELP命令调用WinHelp函数。这个Help应用程序显示一个包含子窗口帮助信息的弹出式窗口。 WS_EX_CONTEXTHELP不能与WS_MAXIMIZEBOX和WS_MINIMIZEBOX同时使用。 WS_EX_CONTROLPARENT:允许用户使用Tab键在窗口的子窗口间搜索。 WS_EX_DLGMODALFRAME:创建一个带双边的窗口;该窗口可以在dwStyle中指定WS_CAPTION风格来创建一个标题栏。 WS_EX_LEFT:窗口具有左对齐属性,这是缺省设置的。 WS_EX_LEFTSCROLLBAR:如果外壳语言是如Hebrew,Arabic,或其他支持reading order alignment的语言,则标题条(如果存在)则在客户区的左部分。若是其他语言,在该风格被忽略并且不作为错误处理。 WS_EX_LTRREADING:窗口文本以LEFT到RIGHT(自左向右)属性的顺序显示。这是缺省设置的。 WS_EX_MDICHILD:创建一个MD子窗口。 WS_EX_NOPATARENTNOTIFY:指明以这个风格创建的窗口在被创建和销毁时不向父窗口发送WM_PARENTNOTFY消息。 WS_EX_OVERLAPPED:WS_EX_CLIENTEDGE和WS_EX_WINDOWEDGE的组合。 WS_EX_PALETTEWINDOW:WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW和WS_WX_TOPMOST风格的组合WS_EX_RIGHT:窗口具有普通的右对齐属性,这依赖于窗口类。只有在外壳语言是如Hebrew,Arabic或其他支持读顺序对齐(reading order alignment)的语言时该风格才有效,否则,忽略该标志并且不作为错误处理。 WS_EX_RIGHTSCROLLBAR:垂直滚动条在窗口的右边界。这是缺省设置的。 WS_EX_RTLREADING:如果外壳语言是如Hebrew,Arabic,或其他支持读顺序对齐(reading order alignment)的语言,则窗口文本是一自左向右)RIGHT到LEFT顺序的读出顺序。若是其他语言,在该风格被忽略并且不作为错误处理。 WS_EX_STATICEDGE:为不接受用户输入的项创建一个3一维边界风格 WS_EX_TOOLWIDOW:创建工具窗口,即窗口是一个游动的工具条。工具窗口的标题条比一般窗口的标题条短,并且窗口标题以小字体显示。工具窗口不在任务栏里显示,当用户按下alt+Tab键时工具窗口不在对话框里显示。如果工具窗口有一个系统菜单,它的图标也不会显示在标题栏里,但是,可以通过点击鼠标右键或Alt+Space来显示菜单。 WS_EX_TOPMOST:指明以该风格创建的窗口应放置在所有非最高层窗口的上面并且停留在其L,即使窗口未被激活。使用函数SetWindowPos来设置和移去这个风格。 WS_EX_TRANSPARENT:指定以这个风格创建的窗口在窗口下的同属窗口已重画时,该窗口才可以重画。 由于其下的同属富日已被重画,该窗口是透明的。 IpClassName:指向一个空结束的字符串或整型数atom。如果该参数是一个整型量,它是由此前调用theGlobaIAddAtom函数产生的全局量。这个小于OxCOOO的16位数必须是IpClassName参数字的低16位,该参数的高位必须是O。 如果lpClassName是一个字符串,它指定了窗口的类名。这个类名可以是任何用函数RegisterClassEx注册的类名,或是任何预定义的控制类名。请看说明部分的列表。 lpWindowName:指向一个指定窗口名的空结束的字符串指针。 如果窗口风格指定了标题条,由lpWindowName指向的窗口标题将显示在标题条上。当使用CreateWindow 函数来创建控制例如按钮,选择框和静态控制时,可使用lpWindowName来指定控制文本。 dwStyle:指定创建窗口的风格。该参数可以是下列窗口风格的组合再加上说明部分的控制风格。 x:参见CreateWindow。 y:参见CreateWindow。 nWidth:CreateWindow。 nHeigth:参见CreateWindow。 hWndParent:参见CreateWindow。 hMenu:参见CreateWindow。 hlnstance:参见CreateWindow。 lpParam:参见CreateWindow。 返回值:参见CreateWindow。 备注:参见CreateWindow。 速查:Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件:USer32.lib;Unicode:在Windows NT上实现为Unicode和ANSI两种版本。 ----------------------------------------------------------------------------------------- CreateWindow 函数功能:该函数创建一个重叠式窗口、弹出式窗口或子窗口。它指定窗口类,窗口标题,窗口风格,以及窗口的初始位置及大小(可选的)。该函数也指定该窗口的父窗口或所属窗口(如果存在的话),及窗口的菜单。若要使用除CreateWindow函数支持的风格外的扩展风格,则使用CreateWindowEx函数代替CreateWindow函数。 函数原型:HWND CreateWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HANDLE hlnstance,LPVOID lpParam); 参数: lpClassName:指向一个空结束的字符串或整型数atom。如果该参数是一个整型量,它是由此前调用theGlobalAddAtom函数产生的全局量。这个小于0xC000的16位数必须是lpClassName参数字的低16位,该参数的高位必须是0。 如果lpClassName是一个字符串,它指定了窗口的类名。这个类名可以是任何用函数RegisterClassEx注册的类名,或是任何预定义的控制类名。请看说明部分的列表。 LPWindowName:指向一个指定窗口名的空结束的字符串指针。 如果窗口风格指定了标题条,由lpWindowName指向的窗口标题将显示在标题条上。当使用Createwindow函数来创建控制例如按钮,选择框和静态控制时,可使用lpWindowName来指定控制文本。 dwStyle:指定创建窗口的风格。该参数可以是下列窗口风格的组合再加上说明部分的控制风格。风格意义: WS_BORDER:创建一个单边框的窗口。 WS_CAPTION:创建一个有标题框的窗口(包括WS_BODER风格)。 WS_CHIlD:创建一个子窗口。这个风格不能与WS_POPUP风格合用。 WS_CHLDWINDOW:与WS_CHILD相同。 WS_CLIPCHILDREN:当在父窗口内绘图时,排除子窗口区域。在创建父窗口时使用这个风格。 WS_CLlPBLINGS;排除子窗口之间的相对区域,也就是,当一个特定的窗口接收到WM_PAINT消息时,WS_CLIPSIBLINGS 风格将所有层叠窗口排除在绘图之外,只重绘指定的子窗口。如果未指定WS_CLIPSIBLINGS风格,并且子窗口是层叠的,则在重绘子窗口的客户区时,就会重绘邻近的子窗口。 WS_DISABLED:创建一个初始状态为禁止的子窗口。一个禁止状态的窗日不能接受来自用户的输入信息。 WS_DLGFRAME:创建一个带对话框边框风格的窗口。这种风格的窗口不能带标题条。 WS_GROUP:指定一组控制的第一个控制。这个控制组由第一个控制和随后定义的控制组成,自第二个控制开始每个控制,具有WS_GROUP风格,每个组的第一个控制带有WS_TABSTOP风格,从而使用户可以在组间移动。用户随后可以使用光标在组内的控制间改变键盘焦点。 WS_HSCROLL:创建一个有水平滚动条的窗口。 WS_ICONIC:创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。 WS_MAXIMIZE:创建一个具有最大化按钮的窗口。该风格不能与WS_EX_CONTEXTHELP风格同时出现,同时必须指定WS_SYSMENU风格。 WS_OVERLAPPED:产生一个层叠的窗口。一个层叠的窗口有一个标题条和一个边框。与WS_TILED风格相同。 WS_OVERLAPPEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXMIZEBOX风格的层叠窗口,与WS_TILEDWINDOW风格相同。 WS_POPUP;创建一个弹出式窗口。该风格不能与WS_CHLD风格同时使用。 WS_POPUWINDOW:创建一个具有WS_BORDER,WS_POPUP,WS_SYSMENU风格的窗口,WS_CAPTION和WS_POPUPWINDOW必须同时设定才能使窗口某单可见。 WS_SIZEBOX:创建一个可调边框的窗口,与WS_THICKFRAME风格相同。 WS_SYSMENU:创建一个在标题条上带有窗口菜单的窗口,必须同时设定WS_CAPTION风格。 WS_TABSTOP:创建一个控制,这个控制在用户按下Tab键时可以获得键盘焦点。按下Tab键后使键盘焦点转移到下一具有WS_TABSTOP风格的控制。 WS_THICKFRAME:创建一个具有可调边框的窗口,与WS_SIZEBOX风格相同。 WS_TILED:产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格相同。 WS_TILEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU MS_THICKFRAME. WS_MINIMIZEBOX,WS_MAXMIZEBOX风格的层叠窗口。与WS_OVERLAPPEDWINDOW风格相同。 WS_VISIBLE:创建一个初始状态为可见的窗口。WS_VSCROLL:创建一个有垂直滚动条的窗口。 X:指定窗口的初始水平位置。对一个层叠或弹出式窗口,X参数是屏幕坐标系的窗口的左上角的初始X坐标。对于子富口,x是子窗口左上角相对父窗口客户区左上角的初始X坐标。如果该参数被设为CW_UCEDEFAULT则系统为窗口选择缺省的左上角坐标并忽略Y参数。CW_USEDEFAULT只对层叠窗口有效,如果为弹出式窗口或子窗口设定,则X和y参数被设为零。 Y:指定窗口的初始垂直位置。对一个层叠或弹出式窗日,y参数是屏幕坐标系的窗口的左上角的初始y坐标。对于子窗口,y是子窗口左上角相对父窗口客户区左上角的初始y坐标。对于列表框,y是列表框客户区左上角相对父窗口客户区左上角的初始y坐标。如果层叠窗口是使用WS_VISIBLE风格位创建的并且X参数被设为CW_USEDEFAULT,则系统将忽略y参数。 nWidth:以设备单元指明窗口的宽度。对于层叠窗口,nWidth或是屏幕坐标的窗口宽度或是CW_USEDEFAULT。若nWidth是CW_USEDEFAULT,则系统为窗口选择一个缺省的高度和宽度:缺省宽度为从初始X坐标开始到屏幕的右边界,缺省高度为从初始X坐标开始到目标区域的顶部。CW_USEDFEAULT只参层叠窗口有效;如果为弹出式窗口和子窗口设定CW_USEDEFAULT标志则nWidth和nHeight被设为零。 nHelght:以设备单元指明窗口的高度。对于层叠窗口,nHeight是屏幕坐标的窗口宽度。若nWidth被设为CW_USEDEFAULT,则系统忽略nHeight参数。 hWndParent:指向被创建窗口的父窗口或所有者窗口的旬柄。若要创建一个子窗口或一个被属窗口,需提供一个有效的窗口句柄。这个参数对弹出式窗日是可选的。Windows NT 5.0;创建一个消息窗口,可以提供HWND_MESSAGE或提供一个己存在的消息窗口的句柄。 hMenu:菜单句柄,或依据窗口风格指明一个子窗口标识。对于层叠或弹出式窗口,hMenu指定窗口使用的菜单:如果使用了菜单类,则hMenu可以为NULL。对于子窗口,hMenu指定了该子窗口标识(一个整型量),一个对话框使用这个整型值将事件通知父类。应用程序确定子窗口标识,这个值对于相同父窗口的所有子窗口必须是唯一的。 hlnstance:与窗口相关联的模块事例的句柄。 lpParam:指向一个值的指针,该值传递给窗口 WM_CREATE消息。该值通过在IParam参数中的CREATESTRUCT结构传递。如果应用程序调用CreateWindow创建一个MDI客户窗口,则lpParam必须指向一个CLIENTCREATESTRUCT结构。 返回值:如果函数成功,返回值为新窗口的句柄:如果函数失败,返回值为NULL。若想获得更多错误信息,请调用GetLastError函数。 备注:在返回前,CreateWindow给窗口过程发送一个WM_CREATE消息。对于层叠,弹出式和子窗口,CreateWindow给窗口发送WM_CREATE,WM_GETMINMAXINFO和WM_NCCREATE消息。消息WM_CREATE的IParam参数包含一个指向CREATESTRUCT结构的指针。如果指定了WS_VISIBLE风格,CreateWindow向窗口发送所有需要激活和显示窗口的消息。 获取有关任务条是否为创建的窗口显示一个按钮的控制信息,参看Taskbar按钮的Visbility。 以下预定义的控制类可以在lpClassName参数中指定。注意在dwStyle参数中可以使用的相应的控制风格。 BUTTON按钮按钮是一个小矩形子窗口,用户可以点击来打开或关闭。按钮控制可以单独使用或包含在组中使用,可以为控制写标签或不写标签。当用户点击按钮控制时按钮的外观有明显的改变。请参看Button。查看dwStyle参数中指定的按钮风格表请参考Button Style。 COMBOBOX组合框由一个列表框和一个类似于编辑控制的选择域组成。在使用这个风格控制时,应用程序或者使列表框一直显示或者是作成一个下拉列表。如果列表框可见,则在编辑域中输入字符将使列表框中与字符一致的第一个域高亮。反之,在列表框中选择的项将显示在编辑域中。请参看Combo Boxes。 查看dwStyle参数中指定的组合框风格表请参考Combo Boxes Style。 EDIT编辑框一个小的矩形子窗口用户可以使用键盘向其中输入文本。用户可以通过点击或按Tab键来选中编辑框控制并且使控制获得焦点。当编辑框中显示一个闪烁的插入记号时,用户可以输入文本。使用鼠标移动光标,选择被替换的字符或设置插入字符的位置或使用回退键删除字符。请参看Edit。controls。 查看dwStyle参数中指定的编辑框风格的表格请参考Edit Control Style。 LISTBOX列表框字符串的列表。当应用程序必须显示名称的列表,例如文件名列表等,使用户可以从中选择时就可指定列表框。用户可以通过单击来选择名称。选择时,被选择名高亮,同时传递给父窗口一个通知消息。请参看LiSt Box Style。查看dwStyle参数中指定的列表风格表请参考List BOX Control Style。 MDICLIENT MDI客户设计出MDI客户窗口。窗口接收控制MDI应用程序子窗口的消息。建议使用两种控制风格位:WS_CLIPCHILDREN和WS_CHILD。指定了WS_HSCROLL和WS_VSCROLL风格的MDI客户窗口允许用户将MDI子窗口滑动进入视窗。请参看MDI。 RiChEdit设计一个Rich Editl.0版的控制。该控制使用户可以以字符和段落格式测览和编辑文本,并且可以包含嵌入的COM对象。请参看Rich Edit Controls。查看dwStyle参数中指定的RichEdit风格表请参考LiSt Box Control Style。 RICHEDIT CLASS设计一个Rich Edik2.0版的控制。该控制使用户可以以字符和段落格式测览和编辑文本,并且可以包含嵌入的COM对象。请参看RichEditControls。查看dwStyle参数中指定的RichEdit风格表请参考RichEditControIStyle。 SCROLLBAR 滚动条设计的一个包含着一个滚动盒和两端有方向箭头的矩形。只要用户点击了控制,滚动条就给父窗口发送一个通知消息。如有必要,父窗口负责更新滚动条的位置。请参看ScrollBars。查看dwStyle参数中指定的滚动条风格表请参考Scroll Bars Style。 STATIC一个简单的静态文本域,文本盒或矩形用于给控制加标签,组合控制或将控制与其他控制分开。 静态控制不提供输入和也不提供输出。请参看Static Control Styles。查看dwStyle参数中指定的静态文本风格表请参考Scroll Bars Style。 Windows95:系统可以支持最大16,364个窗口句柄。 备注:如果在链接应用程序时指明是Windows 4.x版本,除非应用程序的窗口有窗口某单,否则窗口控制没有标题控制。对Windows3.x版本没有这种要求。 Windows CE:CreateWindow是以“宏”方式完成的。它被定义为CreateWindowEX,并且dwExStyle参数被置为长整数0。不支持菜单条控制,除非被声明为子窗口标志否则hMenu参数必须为NULL。不支持MDICLIENT窗口类。dwStyle参数可以是对话框(Dialogue Box),窗口(Windows),控制(Controls)文件中的窗口风格和控制风格的组合。 下列dwStyle标志在窗口中不支持: WS_CHILDWINDOW WS_ICONC;WS_MAXMIZE WS_MAXIMIZEBOX;WS_MINIMIZE WS_MINIMIZEBOX; WS_OVERLAPPEDWINDOW WS_POPUPWINDOW;WS_SIZEBOXWS_THICKFRAME WS_TILED WS_TILEDWINDOW 下列dwStyle标志在控制和对话框中不支持: 不支持的按钮风格和静态控制风格: BS_LEFTTEXT SS_BLACKFRAME;BS_MULTILINE SS_GRAYFRAME BS_TEXT SS_METAPICT;BS_USERBUTTON SS_SIMPLE 不支持组合框SS_WHITERECT风格。 CBS_OWNERDRAWFIXED SS_BLACKRECT;CBS_OWNWEDRAWVARIABLE SS_GRAYRECT; CBS_SIMPLE8R旧HTrIMAGE 不支持列表框控制SS_WHITEFRAME风格。 LBS_NODATA 不支持的对话框风格: LBS_OWNERDRAWFIXED DS_ABSALIGN; LBS_OWNERDRAWVARIABLE DS_CENTERMOUSE; LBS_STANDARD DS_CONTEXTHELP 不支持滚动条的 DS_FIXEDSYS风格 SBS_BOTTOMALIGN DS_NOFAILCREATE;SBS_RIGHTALIGN DS_NOIDLEMSG; SBS_SlZEBOXBOTT0MRIHTALIGN DS_SYSMODAL;SBS_SIZEGRIP 可使用BS_OWNERDRAW风格来代替BS_USERBUTTON风格。 可使用SS_LEFT或SS_LEFTNOWORDWRAP风格来代替静态控制的SS_SIMPLE风格。 不支持MDICLIENT窗口类。 所有窗口都隐含WS_CLIPSIBLINGS和 WS_CLIPCHILDREN风格。 Windows CE1.0版除对话框外不支持被属窗口。如果hwndParent参数不为NULL,则窗口隐含给出WS_CHILD风格。Windows CE1.0不支持菜单条。 速查: Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件:user32.lib; Unicode:在Windows NT上实现为Unicode和ANSI两种版本。 --------------------------------------------------------------