MFC界面编程基础(13):列表框和组合框

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_17017545/article/details/85229888
上一篇:MFC界面编程基础(12):组框、单选按钮和复选框 下一篇:MFC界面编程基础(14):滚动条

列表框和组合框

列表框是CListBox类的对象,组合框是CComboBox的对象。

列表框

  • 属性设置
    列表框的重要属性有:
  • Selection
    该属性决定用户的选择方式,缺省值为 Single 。属性值有:
    ①:Single ── 单项选择
    ②:Multiple ── 多项选择,但是忽略 Ctrl 和 Alt 键。
    ③:Extended ── 允许使用 Ctrl 和 Alt 进行多项选择
    ④:None ── 禁止选择
    在这里插入图片描述
  • Sort
    当该属性被设置为True后,列表框中的选项按字母顺序排列。
    在这里插入图片描述
  • 常用成员函数
  • 添加项目
    格式: int AddString( LPCTSTR lpszItem );
    例如:语句 m_l. AddString(" 陈蓉 ") ; 把“陈蓉”添加到了列表框 m_l 中。
  • 删除项目
    格式: int DeleteString( UINT nIndex );
    说明: nIndex 表示被删除项目在列表框中的位置,对于第一个选项nIndex应为 0 。
    例如:语句 m_l. DeleteString (4) ;删除列表框中的第 5 个项目。
  • 获取当前被选定的项目的序号
    格式: int GetCurSel( ) const;
    例如:语句int I=m_l.GetCurSel(); 将使I 获得 m_l 列表框中当前选定的项目的序号。
  • 获取列表框中指定的项目
    格式 1 : int GetText( int nIndex, LPTSTR lpszBuffer ) const;
    格式 2 : void GetText( int nIndex, CString& rString ) const;
    说明 :将列表框中第 nIndex 个选项的文本送到 lpszBuffer 或 rString 中。
    例如:假定有说明语句 char s1[20]; CString s2;则语句 m_l.GetText(4, s1); 和 m_l. GetText(4, s2); 把第 5 项内容分别送到 s1 和 s2 中。

【例】

编写一个能对列表框进行项目添加、修改和删除操作的应用程序,如图所示。“添加”按钮的功能是将文本框中的内容添加到列表框,“删除”按钮的功能是删除列表框中选定的选项。如果要修改列表框,则首先选定选项,然后单击“修改”按钮,所选的选项显示在文本框中,当在文本框中修改完之后再单击“修改确定”按钮更新列表框。
在这里插入图片描述

  • 界面设计
    首先创建一个对话框应用程序框架,然后放置按钮。列表框和命令按钮按表连接变量,其余控件不需要连接变量。
    在这里插入图片描述
  • 初始化
    列表框的选项在对话框的初始化函数中用 AddString 函数添加。
BOOL CTESTDlg::OnInitDialog() 
{ 
	┆ 
	// TODO: Add extra initialization here 
	m_l.AddString(" 大学计算机基础 "); 
	m_l.AddString("C/C++ 程序设计 "); 
	m_l.AddString("VB 程序设计 "); 
	m_l.AddString(" 软件技术基础 "); 
	┆ 
} 
  • 消息处理函数
…………………………………………………………
void CTESTDlg::OnButton1() // 选择“添加”后执行的函数 
{ 
 // TODO: Add your control notification handler code here 
 UpdateData(TRUE); 
 m_l.AddString(m_e); 
 m_e=""; 
 UpdateData(FALSE); 
} 
…………………………………………………………
void CTESTDlg::OnButton2() // 选择“删除”后执行的函数 
{ 
 // TODO: Add your control notification handler code here 
 int n=m_l.GetCurSel(); 
 m_l.DeleteString(n); 
} 
…………………………………………………………
void CTESTDlg::OnButton3() // 选择“修改”后执行的函数 
{ 
 // 将选定的项目送编辑框供修改 
 // TODO: Add your control notification handler code here 
 CString s; 
 int n=m_l.GetCurSel(); 
 m_l.GetText(n,s); 
 m_e=s; 
 UpdateData(FALSE); 
} 
…………………………………………………………
void CTESTDlg::OnButton4() // 选择“确定修改”后执行的函数 
{ 
 // 将修改后的项目送回列表框中,替换原项目,实现修改。 
 // TODO: Add your control notification handler code here 
 UpdateData(TRUE); 
 int n=m_l.GetCurSel(); 
 m_l.DeleteString(n); 
 m_l.InsertString(n,m_e); 
 m_e=""; 
 UpdateData(FALSE); 
} 
…………………………………………………………

组合框

  • 属性设置

  • 种类( Type )
    该属性用于指定组合框的类型,共有三个选择: Simple 、 Dropdown 和 Droplist ,默认值为 Dropdown 。
    在这里插入图片描述

  • 键入列表框项( Enter listbox items )
    在列表框的属性窗口有一个“ Data ”属性,这是在设计阶段输入选项的地方,如图所示。输入每一项都需要用分号分隔
    在这里插入图片描述

  • 常用成员函数
    编辑框和列表框的成员函数几乎都可以用于组合框,但是列表框的成员函数 GetText() 在组合框中的是 GetLBText()

  • int GetLBText( int nIndex, LPTSTR lpszText ) const;

  • void GetLBText( int nIndex, CString& rString ) const;
    说明 :使用 GetLBText 函数可以将组合框中的第 nIndex 个项目的文本送入 lpszText 或 rString 中。

  • 组合框发出的消息

  • CBN_SELECTCHANGE :组合框的列表框中的选项改变时发送

  • CBN_EDITCHANGE :组合框的编辑框中文本改变时发出

【例】

设计一个如图所示的对话框。如果单击“确定”按钮,则用 MessageBox 显示如图所示的信息框。
在这里插入图片描述

  • 首先创建一个对话框程序框架,然后放置各控件,进行属性设置,组合框的选项在设计阶段直接输入,按表连接变量,其余控件不需要连接变量。

在这里插入图片描述

  • 消息处理函数
void CTESTDlg::OnButton1() 
{ 
 // TODO: Add your control notification handler code here 
 UpdateData(TRUE); 
 CString s; 
 s=" 品牌 :"; 
 s=s+m_c; 
 s=s+"\n"; 
 s=s+" 数量 :"; 
 s=s+m_e; 
 MessageBox(s); 
}
上一篇:MFC界面编程基础(12):组框、单选按钮和复选框 下一篇:MFC界面编程基础(14):滚动条

猜你喜欢

转载自blog.csdn.net/qq_17017545/article/details/85229888
今日推荐