MFC----ListBox用法
VC++2005 MFC ListBox(列表框)的使用 作者:邵盛松 转自百度文库
ListBox的操作比较简单
1. 添加数据
声明控件变量的类别为Control,变量类型为CListBox,变量名为m_ListBox_Content.
m_ListBox_Content.AddString(_T("123"));
m_ListBox_Content.AddString(_T("汉字"));
m_ListBox_Content.AddString(_T("English"));
m_ListBox_Content.AddString(_T("!@#$%^&*()"));
2. 获取数据
CString s;
m_ListBox_Content.GetText(1,s);
MessageBox(s,_T("取得第2行数据"),MB_OK);
s.ReleaseBuffer();
将会得到"汉字"这个字符串,如果没有得到"汉字"这个字符串,是因为ListBox的Sort属性设为True了.设为False之后就按照你编写的顺序写入.
3. 获取选择的数据
首先要将ListBox的Selection属性设置为Multiple;
int nSel;
nSel=m_ListBox_Content.GetCurSel();
CString s;
m_ListBox_Content.GetText(nSel,s);
MessageBox(s,_T("您选择的是"),MB_OK);
s.ReleaseBuffer();
4. 获取选择ListBox项的多个数据
首先要将ListBox的Selection的属性设置为Multiple
int nSel = m_ListBox_Content.GetSelCount();
CArray< int,int& > arrayListSel;
arrayListSel.SetSize(nSel);
m_ListBox_Content.GetSelItems(nSel,arrayListSel.GetData());
CString s = _T("");
for( int i=0; i< nSel; i++ )
{
m_ListBox_Content.GetText( arrayListSel[i], s);
MessageBox(s,_T("您选择的是"),MB_OK);
}
5. 双击删除所选项
添加一个ListBox的双击事件
m_ListBox_Content.DeleteString(m_ListBox_Content.GetCurSel());
6. 设置listbox的设置水平滚动条
void Cjmail_testDlg::SetListBoxSPGD()
{
// 设置listbox的水平滚动条
CString str;
CSize sz;
int dx=0;
CDC *pDC = this->GetDC();
//find the longest string!
for (int i=0;i < m_ctlList2.GetCount();i++)
{
m_ctlList2.GetText( i, str );
sz = pDC->GetTextExtent(str);
if (sz.cx > dx)
dx = sz.cx;
}
this->ReleaseDC(pDC);
//下面的代码屏蔽掉垂直滚动条所占的客户区的尺寸
CRect rectWindow,rectClient;
this->m_ctlList2.GetClientRect(rectClient);
this->m_ctlList2.GetWindowRect(rectWindow);
CSize extSize=rectWindow.Width()-rectClient.Width();
//设置水平滚动条的属性
this->m_ctlList2.SetHorizontalExtent(dx+extSize.cx);
// 设置listbox的水平滚动条
}