该例是个小练习,有两个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、现在运行下程序,看看效果吧:)