CListBox添加项,得到选中的单项或多项的值。
1 首先添加一个对话框,并创建这个对话框的类。
2 在主菜单蓝栏中添加一个菜单“列表框”,并添加这个菜单的单击事件
在OnInitDialog()中队列表框进行初始化。
BOOL CUserDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
((CListBox*)GetDlgItem(IDC_LIST1))->AddString(_T("程序员"));
((CListBox*)GetDlgItem(IDC_LIST1))->AddString(_T("软件工程师"));
((CListBox*)GetDlgItem(IDC_LIST1))->AddString(_T("系统架构师"));
((CListBox*)GetDlgItem(IDC_LIST1))->AddString(_T("分析师"));
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void CUserDlg::OnBnClickedButtonOk()
{
// TODO: 在此添加控件通知处理程序代码
CListBox *m_lstInfo = (CListBox *)GetDlgItem(IDC_LIST1);
//那么你可以用一个循环取出里面的值:
/*
CString str; //临时变量用来接收项的字符串
CString strAll=_T(""); //所有项
int nCount = m_lstInfo->GetCount();//得到项目总数
for(int i = 0; i< nCount; ++i)
{
m_lstInfo->GetText(i,str);
strAll = strAll + str + _T("\r\n");
}
AfxMessageBox(strAll);
*/
//取出单选选中的值
/*
int index;
CString selectStr;
index = m_lstInfo->GetCurSel();
m_lstInfo->GetText(index,selectStr);
AfxMessageBox(selectStr);
*/
//多选,设置selection为Multiple
int nCount = m_lstInfo->GetSelCount();
CString cCount;
CArray<int,int> aryListBoxSel;
aryListBoxSel.SetSize(nCount);
m_lstInfo->GetSelItems(nCount, aryListBoxSel.GetData());
//得到总数
cCount.Format(_T("%d"),nCount);
AfxMessageBox(cCount);
//得到选中的多项
for (int i=0;i<nCount;i++)
{
CString selStr;
m_lstInfo->GetText(aryListBoxSel[i],selStr);
AfxMessageBox(selStr);
}