基础控件的使用
创建和初始化
响应的消息
控件的函数
按钮
使用按钮一般不需要初始化
单击消息BN_CHICKED
SetWindowText设置控件的标题
1 | wchar_t str1[10] = {}; |
单选框
使用CButton类绑定单选框对象,只绑定Group的第一个对象即可。分组属性只能给第一个控件设置
单选框时按钮的一种,响应方式和按钮一样
绑定CButton类后,使用GetCheck和SetCheck来获取或设置单选框的选中状态
1 | m_Radio1.SetCheck(1); |
绑定基础类型后,使用UpdateData同步数据,变量的值为几即为第几个数据
1 | UpdateData(TRUE); |
多选框
每一个多选框都要绑定一个变量
同单选框
绑定CButton类型的变量可以GetCheck和SetCheck
绑定基础类型的可以使用UpdateData同步变量并进行修改
编辑框
- 使用属性初始化
- 编辑框内容被修改时发送EN_CHANGE消息
- 绑定CEdit类型时
1 | //设置编辑框的最大文本数 |
列表框(List Box)
属性中初始化
修改当前选中LBN_SELCHANGE
类型为CListBox
1 | //添加一行到列表框 |
下拉框(Combo Box)
属性中有一个sort排序默认是True,改为Flase
当选项改变时发出CB_NSELCHANGE消息
CComboBox类
1 | //插入新条目 |
静态文本
一般不绑定变量,只起提示作用
如果想要修改,可以先获取到控件的窗口句柄,再通过SetWindowText进行修改
1 | CWnd* p = nullptr; |
图片
- 修改属性ID,type和center image
不需要处理图片的消息
绑定CStatic类后
添加一张位图(Bitmap)到资源中(注意修改文件类型为*,否则显示不出来位图)
在图片控件的image属性中填写位图的资源ID
或者
调用CStatic类的SetBitmap函数,将位图资源的句柄传进去
1 | HBITMAP hBitmap = LoadBitmap(AfxGetInstanceHandle(), (TCHAR*)IDB_BITMAP1); |
或者
使用磁盘中的图片文件
1 | CImage img; |
滑块(Slider Control)
属性中设置风格
如果滑块是水平风格的话,则会向父窗口发送WM_HSCROLL消息
如果滑块是垂直风格的话,则会向父窗口发送WM_VSCROLL消息
类类型绑定为CSliderCtrl
1 | //初始化范围 |
进度条(Progress Control)
进度条实际上就是一个特殊的滑块,通过SetPos来修改进度条的进度
进度条和滑块一样,也是有水平和垂直的
添加类型为CProgressCtrl的变量
1 | //与滑块相同 |
栏控件
菜单栏
- 添加一个菜单栏资源
- 添加一个CMenu类型的对象
1 | //加载菜单 |
菜单栏的消息响应
弹出菜单
新建一个处理WM_RBUTTONDOWN消息的函数(类向导)
1 | //指向菜单栏第二列的指针 |
状态栏
创建一个类型为CStatusBar的成员变量
1 | //设置指示器的ID |
注意 应在WM_SIZE消息的处理函数中重新修复位置
1 | RepositionBars(AFX_IDW_CONTROLBAR_FIRST, |
工具栏
创建一个类型为CToolBar的成员变量
添加一个资源,类型为ToolBar
1 | //加载资源 |
响应消息
先得到工具栏控件的ID
响应WM_COMMAND消息
在wParam中保存的就是控件ID