当前课程知识点:VC++面向对象与可视化程序设计(下):MFC编程基础 > 第7章 Windows标准控件在可视化编程中的应用 > 7-7 组合框控件 > 7-7
返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(下):MFC编程基础》慕课在线视频列表
下面我们一起来学习组合框控件
组合框(ComboBox)它的支持的类是CComboBox类
组合框实际上是两种预定义窗口的组合形式
在Windows编程中使用单一控件
往往不能很好满足与用户交互的需要
最常见的组合框例子是
对话框及与其相联系的静态文本和编辑框
组合框与应用程序间消息传递
也是通过向其父窗口发送COMMAND消息
通知应用程序的交互信息
组合框常见的样式有
DROPDOWN说明组合框是由列表框和编辑框组成
列表框其实平时并不可见
DROPDOWNLIST是组合框由列表框和静态文本组成
AUTOHSCROLL是编辑框中自动水平滚动
Sort是列表框中各项按字母顺序排序
组合框通过向它的父窗口发送COMMAND消息
通知应用程序用户的交互信息
它的消息字参数的低字节为控件标识
高字节为标识组合框动作的消息通知码
通知码主要有这些
比如说SELCHANGE
这是组合框中列表框部分所选中项发生变化
比如说DBLCLK这是双击
以及组合框的SETFOCUS和KILLFOCUS
设置它的收到输入焦点和失去输入焦点
以及EDITCHANGE
组合框中的编辑框中的文本发生变化
EDITUPDATE是组合框中的编辑框
将显示修改过的文本
DROPDOWN是组合框中的列表框下拉
CLOSEUP是组合框中的列表框隐藏
应用程序向组合框发送消息
也可以使用SendMessage和SendDlgItemMessage来完成
这里的消息我就不细说了
大家可以查询我们的教材内容
也可以查询MSDN的内容
这里的消息我简要地介绍几个
比如说ADDSTRING是在列表框中加入新的项
DELETESTRING是在列表框中删除新项
INSERTSTRING是在列表框中插入一个新的项
这个INSERTSTRING和ADDSTRING都是加入
有什么区别呢
INSERT可以在列表框中任何位置加入
而ADD是在列表框最后一个位置加入
FINDSTRING是在列表框中查询列表项
DIR是在列表框中显示指定的目录和文件
这个SETCURSEL
CUR是Current的缩写
SEL是Selection的缩写
是设置列表框中的选中项
有Set就有Get
这是GETCURSEL获取选中项
GETCOUNT是获取列表框中项的数目
LIMITEXT是限制编辑框中字符串的长度
下面我们通过一个例子向大家介绍组合框控件的使用
这个例子是这样的
我们要求创建一个组合框
当单击向下按钮的时候
显示可选文件的名字
我们如果选中当中的某一项
比如说我们选中Saturday
这时候就有一个对话框告诉我们
选中的是Saturday
就是显示该项的名称
我们看这个是怎样完成的
我们创建一个工程文件
我们的文件比如说叫7_7
好,我们叫7_7
然后把系统生成的东西都不要了
这个时候我们是要将组合框ComboBox放到对话框上
然后把它放大一些
我们要把它的Sort风格取消掉
因为刚才大家看的例子里面
这里面并不是按照字母顺序排的
因为我们去掉了Sort风格
然后我们为ComboBox连接一个变量
叫m_cb
m_cb实际上就是ComboBox
就是这个意思
为什么要连接变量
因为当我们单击向下箭头的时候
要显示一些内容
所以我们要连接这样一个变量
当连接了变量之后
也就是说当程序运行的时候
系统就马上显示了可供选择的选项
这些可供选择的选项是在哪里定义的呢
是在初始化函数里定义的
是在OnInitDialog里定义的
我们在OnInitDialog里面增加一部分代码
这个m_cb大家知道就是ComboBox
因为我们刚才定义了一个变量
那么它就可以执行ComboBox类里面的成员函数
成员函数中我们简单用AddString一个一个往上面加
星期一星期二一直加到星期天
实际上这个时候就是对ComboBox进行了初始化
假设我们现在运行一下程序
好了 编译成功
我们运行一下
单击向下箭头
显示的内容就是我们这里设置的内容
那么这个时候它这里的显示
比如说我选上了某一项Saturday
要求这里有一个对话框显示
但是这里对话框并没有显示出来
因为我们的工作还需要进一步的完成
由于我们选择的内容
比如说选择了星期六
它有一个消息框会显示
这个时候我们就要给它进行一个消息处理
我们给它添加一个事件处理程序
选择SELCHANGE这个消息
系统给我们建立了一个函数处理程序的名称
我们直接使用它就可以了
这是我们进入函数编辑状态
我们添加的代码基本都是在TODO下面
TODO下面的代码基本没有
如果有的话是系统自动生成的
我们不用去管它
这时我们定义一个CString的变量msg
然后由于我们选择了ComboBox里面的某一项
所以我们调用m_cb
也就是刚才为ComboBox对象连接的变量
然后调用它的成员函数Get List Box,即GetLBText
我们要把里面的文本全部获取
所以是GetCurSel
然后把当前选择的内容赋给msg字符串
所以GetLBText函数的功能就是
把ComboBox里面当前的选项作为一个字符串赋给msg
然后通过AfxMessageBox将msg的字符串显示出来
这时我们再编译一下
我们仍然选择星期六
就可以显示出来
刚才没有做这个工作的时候
选择后是没有显示对话框的
这个应用程序我们就介绍到这儿
-讨论实录
--0-0
-6-1 MFC概述
-6-2 C++的基本知识
--6-2-1 类
--6-2-2 对象
--6-2-6 重载
--6-2-9 指针
-6-3 MFC类的组织结构及主要的类的简介
--6-3-2 根类
-6-4 MFC中全局函数和全局变量
-7-1 概述
--7-1-1
--7-1-2
-7-2 按钮控件及其应用
--128B12447816EEF99C33DC5901307461
-7-3 按钮控件及其应用
--7-3
-7-4 静态控件
--7-4
-7-5 列表框控件
--7-5-1
--7-5-2
-7-6 编辑框控件
--7-6
-7-7 组合框控件
--7-7
-7-8 对话框通用控件
--7-8-1
--7-8-2
-讲义源代码
--html
-8-1&2 资源的应用以及菜单资源的使用
--8-1-1
--8-1-2
-8-3 快捷菜单的创建及其应用
--8-3
-8-4 加速键资源的创建及其使用
--8-4
-8-5 工具条资源的创建及其使用
--8-5
-8-6 字符串资源的使用
--8-6
-8-7 位图资源的创建及其使用
--8-7
-课堂示例源代码
--html
-第一次作业内容及要求
--html
--第一次作业及答题链接--作业
-9-1 概述
--9-1
-9-2 Doc/View框架的主要成员
--Video
-9-3 文档操作中的一些重要概念
--Video
-9-4 SDI编程实例
--Video
-9-5 MDI编程实例
--9-5-1
--9-5-2
-课堂示例源代码
--html
-第二次作业内容及要求
--html
--第二次作业及答题链接--作业
-10-1 利用音频函数实现多媒体程序设计
--10-1-1
--10-1-2
--10-1-3
--10-1-4
-10-2 利用Windows Media Player控件实现多媒体程序设计
--10-2
-课堂示例源代码
--html
-例11-1
--例1
-例11-2
--例11-2
-例11-3
--例11-3
-例11-4
--例11-4
-11-1 ODBC介绍与引用
--11-1
-课堂示例源代码
--html
-第三次作业及答题链接