练习使用CListBox

该例是个小练习,有两个listbox控件,可以通过其中的四个button按钮,实现从一个listbox向另一个listbox中传递数据,操作过程如下:

1、创建一个Dialog based MFC应用程序,命名为try。

2、为对话框添加两个LsitBox控件,分别命名为IDC_LIST1和IDC_LIST2

3、打开ClassWizard,分别为IDC_LIST1和IDC_LIST2添加CListBox类型的变量m_list1和m_list2与之相关联

4、再为对话框添加四个Button控件,分别命名为IDC_TO_RIGHT、IDC_TO_LEFT、IDC_RIGHT_ALL、IDC_LEFT_ALL

5、再次打开ClassWizard,为刚才添加的button控件添加消息响应函数。响应BN_CLICK消息,消息响应接受默认选项目,分别为:void CTryDlg::OnToRight()、void CTryDlg::OnToLeft()、void CTryDlg::OnRightAll()、void CTryDlg::OnLeftAll()

6、选择IDC_LIST1控件,选择"属性"->Styles->Selections->Extended,对IDC_LIST2采取同样的操作

7、对OnToLeft添加如下代码

void CTryDlg::OnToLeft()
{
 // TODO: Add your control notification handler code here
 if(m_list2.GetCount()==0)
 {
  MessageBox("list2 is empty!");
  return;
 }
 
 int buf[10];
 CString str;

 int number = m_list2.GetSelItems(MAX_NUM,buf);
 for(int i=0;i<number;i++)
 {
  m_list2.GetText(buf[i],str);
  m_list1.AddString(str);
 }

 for(i=0;i<number;i++)
 {
  m_list2.DeleteString(buf[i]-i);
 }
}

8、对OnToRight添加如下代码

void CTryDlg::OnToRight()
{
 // TODO: Add your control notification handler code here
 if(m_list1.GetCount()==0)
 {
  MessageBox("list1 is empty!");
  return;
 }
 
 int buf[10];
 CString str;

 int number = m_list1.GetSelItems(MAX_NUM,buf);
 for(int i=0;i<number;i++)
 {
  m_list1.GetText(buf[i],str);
  m_list2.AddString(str);
 }

 for(i=0;i<number;i++)
 {
  m_list1.DeleteString(buf[i]-i);
 }

}

9、对OnRightAllt添加如下代码

void CTryDlg::OnRightAll()
{
 // TODO: Add your control notification handler code here
 if(m_list1.GetCount()==0)
 {
  MessageBox("list1 is empty");
  return;
 }

 CString str;

 for(int i=0;i<m_list1.GetCount();i++)
 {
  m_list1.GetText(i,str);
  m_list2.AddString(str);
 }

 for(i=0;i<m_list1.GetCount();)
 {
  m_list1.DeleteString(i);
 }
}

10、对OnLeftAllt添加如下代码

void CTryDlg::OnLeftAll()
{
 // TODO: Add your control notification handler code here
 if(m_list2.GetCount()==0)
 {
  MessageBox("list2 is empty");
  return;
 }

 CString str;

 for(int i=0;i<m_list2.GetCount();i++)
 {
  m_list2.GetText(i,str);
  m_list1.AddString(str);
 }

 for(i=0;i<m_list2.GetCount();)
 {
  m_list2.DeleteString(i);
 }
}

11、最后,在OnInitUpdate函数中,添加

CString str;
 for(int i=0;i<10;i++)
 {
  str.Format("%d",i);
  m_list1.AddString(str);
 }

为list1添加了10条记录

12、现在运行下程序,看看效果吧:)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值