Win32子窗口控件(按钮、编辑框、静态框、滚动条等)

前言:
子窗口控件是特殊的子窗口,不需要我们注册窗口类,系统已经注册好了,我们只需要在创建时选择相应的窗口类名。常用的子窗口控件有按钮BUTTON组合框COMBOBOX编辑框EDIT列表框LISTBOX静态框STATIC滚动条SCROLLBAR等类型。消息为WM_COMMAND/WM_CTLCOLORBTN

在这里插入图片描述

一、按钮(BUTTON)

窗口类名:"button"

1. 按钮样式

风格 说明 风格 说明
BS_PUSHBUTTON 下压式按钮 BS_DEFPUSHBUTTON 下默认普通按钮,具有较黑的边框
BS_CHECKBOX L 复选框 BS_AUTOCHECKBOX 复选框,自动维护状态
BS_RADIOBUTTON 圆形单选按钮 BS_AUTORADIOBUTTON 单选框,自动维护状态
BS_3STATE 三态复选按钮,选中,未选中,未定 BS_AUTO3STATE 检查框,按钮的状态会自动改变
BS_GROUPBOX 分组框 BS_OWNERDRAW 可创建一个拥有者自绘按钮
BS_LEFTTEXT 左对齐文字

注意:
1.灰色是向使用者表示此框不能被选本章的或者禁止使用
2.单选按钮是互斥的,只能选择其中一项;而复选框没有限制,可以选择一项或多项。
3.单选按钮一般是分组的,一组单选按钮之间是互斥的,只能选择其中一个。一个窗口可以包含多组单选按钮。(通过WS_GROOUP进行分组,在创建按钮时,加入WS_GROOUP的按钮为组长,后面接着的都为此组,知道下一个WS_GROOUP出现)。
4.单选按钮的父窗口为分组框控件 hGroupSex,而不是顶级窗口 hWnd。

2. 按钮消息:WM_COMMAND

消息参数: wParam 和 lParam

说明
LOWORD(wParam) 按钮的ID
HIWORD(wParam) 通知码BN_
(HWND)lParam 子窗口按钮句柄

3. 补充

1.创建单选按钮:

button1=CreateWindow(TEXT("button"), TEXT("男"), WS_GROUP|WS_CHILD | >WS_VISIBLE|BS_AUTORADIOBUTTON,
			350,150,50,20,
			hwnd, (HMENU)1, ((LPCREATESTRUCT)lParam)->hInstance, NULL);

2.创建一个位图按钮:

HBITMAP bmp = (HBITMAP)LoadBitmap(((LPCREATESTRUCT)lParam)->hInstance, MAKEINTRESOURCEW(IDB_BITMAP5));
button2=CreateWindow(TEXT("button"), NULL, WS_CHILD | WS_VISIBLE|BS_BITMAP,
			300, 300, 240,120,
			hwnd, (HMENU)2, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
SendMessage(button2, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)bmp);

3.修改按钮文本:

SetWindowText(button1,TEXT("设置文本为:自由自在!"));

4.隐藏按钮、显示按钮、禁用按钮、启用按钮:

ShowWindow(button,SW_HIDE);    // 隐藏按钮
ShowWindow(button,SW_SHOW);    // 显示按钮
EnableWindow(button,TRUE);     // 启用按钮
EnableWindow(button,FALSE);    // 禁用按钮

5.设置焦点:

SetFocus(hwnd);

二、静态框(STATIC)

主要用于显示文本、图片。
窗口类名:"static"

1.静态框种类

说明 说明
SS_CENTER 字符居中显示 SS_LEFT 字符左对齐
SS_LEFTNOWORADWRAP 字符左对齐,超过末尾字符被裁剪 SS_BLACKRECT 用窗口边框色填充的矩形
SS_BLSCKFRAME 矩形边框,与窗口边框同色 SS_GRAYRECT 用屏幕背景色填充的矩行
SS_GRAYFRAME 矩形边框,使用屏幕背景色 SS_WHITERECT 用窗口背景色填充的矩行
SS_RIGHT 字符右对齐 SS_WHITEFRAME 矩形边框,使用窗口背景色

静态框不发送消息

2.补充

1.创建文本静态框:

static1=CreateWindow(TEXT("static"), TEXT("性别:"), WS_CHILD|WS_VISIBLE,
			300,150,50,20,
			hwnd, (HMENU)12, ((LPCREATESTRUCT)lParam)->hInstance, NULL);

2.创建位图静态框:

HBITMAP bmp = (HBITMAP)LoadBitmap(((LPCREATESTRUCT)lParam)->hInstance, MAKEINTRESOURCEW(IDB_BITMAP5));
static2=CreateWindow(TEXT("static"), NULL, WS_CHILD|WS_VISIBLE|SS_BITMAP,
			300,150,50,20,
			hwnd, (HMENU)13, ((LPCREATESTRUCT)lParam)->hInstance, NULL);
SendMessage(static2, STM_SETIMAGE , IMAGE_BITMAP, (LPARAM)bmp);

3.修改静态框文本:

SetWindowText(static1,TEXT("设置文本为:自由自在!"));

4.隐藏静态框、显示静态框、禁用静态框、启用静态框:

ShowWindow(static1,SW_HIDE);    // 隐藏静态框
ShowWindow(static1,SW_SHOW);    // 显示静态框
EnableWindow(static1,TRUE);     // 启用静态框
EnableWindow(static1,FALSE);    // 禁用静态框

三、编辑框(EDIT)

窗口类别:"edit"

1.窗口风格

说明 说明
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_WANTRETURN使多行编辑器接收回车键输入并换行如果不指定该风格,按回车键会选择缺省的命令按钮,这往往会导致对话框的关闭。

2. 编辑框消息:WM_COMMAND

消息参数: wParam 和 lParam

说明
LOWORD(wParam) 按钮的ID
HIWORD(wParam) 通知码BN_
(HWND)lParam 子窗口按钮句柄

在这里插入图片描述

3. 补充

1.创建编辑框控件

CreateWindow(TEXT("edit"), TEXT("请输入文本:"), WS_CHILD|WS_VISIBLE| ES_MULTILINE,
			0,0,100,500,
			hwnd, (HMENU)0, ((LPCREATESTRUCT)lParam)->hInstance, NULL);

2.获得行数

y=SendMessage(hwndedit,EM_ GETLINECOUNT,0,0);  // 获得行数

3.获取输入框的数据

GetWindowText(hwndedit, szUsername, 100);  // 获取输入框的数据

四、其他控件样式

旋转按钮控件

说明
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 在轨道条中显示一个选择范围.

列表框风格

说明
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 按降序排列表项.

控件样式参考列表

说明
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 有上下文帮助按钮
发布了30 篇原创文章 · 获赞 37 · 访问量 5491

猜你喜欢

转载自blog.csdn.net/qq_45021180/article/details/100054152
今日推荐