CStringArray用法:
列表框:m_list
单选按钮:m_radio int(指其中一个属性设置为:组)
文本框:m_pos int 、m_str CString
按钮:OnCheck()
1、创建基于对话框的工程StringArray.
2、在CStringArrayDlg构造函数中添加:
public:
CStringArray m_array;
3、按钮单击事件:OnCheck代码
void CStringArray1Dlg::OnCheck()
{
UpdateData(true);
switch(m_radio)
{
int i;
case 0:
if(m_pos < 0 || m_pos > m_array.GetSize())
{
AfxMessageBox("数组位置不正确!");
return;
}
if(m_str.IsEmpty())
{
AfxMessageBox("输入信息不能为空!");
return;
}
m_array.InsertAt(m_pos,m_str);
m_list.ResetContent();//清空列表框
for(i = 0; i<m_array.GetSize(); i++)
{
m_list.AddString(m_array.GetAt(i));
}
m_str = "";
m_pos = m_array.GetSize();
UpdateData(false);
break;
case 1:
if(m_pos < 0 || m_pos >= m_array.GetSize())
{
AfxMessageBox("数组位置不正确!");
return;
}
m_array.RemoveAt(m_pos);
m_list.ResetContent();
for( i = 0; i<m_array.GetSize(); i++)
{
m_list.AddString(m_array.GetAt(i));
}
m_str = "";
m_pos = m_array.GetSize();
UpdateData(false);
break;
}
}
CPtrList的使用:
列表框:m_list
单选按钮:m_radio
文本框:m_name CString , m_price double , m_sum double
按钮:OnCheck()
1、创建基于对话框的工程PtrList
2、在CCPtrListDlg文件顶部定义结构体:CGoods
struct CGoods
{
CString m_name;
double m_price;
};
3、构造函数中添加:
CPtrList m_goodslist;
4、通过类向导添加成员函数:
void Reflesh();
5、OnCheck()代码:
void CCPtrListDlg::OnCheck()
{
UpdateData(true);
CGoods* m_pGoods = new CGoods();
switch(m_radio)
{
case 0:
if(m_name.IsEmpty() || m_price <= 0)
{
AfxMessageBox("输入商品信息不正确!");
return;
}
m_pGoods->m_name = m_name;
m_pGoods->m_price = m_price;
m_goodslist.AddTail(m_pGoods);
m_name = "";
m_price = 0.0;
Reflesh();//函数调用
break;
case 1:
if(m_goodslist.GetCount())//链表不为空
{
m_goodslist.RemoveHead();
}
m_name = "";
m_price = 0.0;
Reflesh();
break;
case 2:
if(m_goodslist.GetCount())
{
m_goodslist.RemoveTail();
}
m_name = "";
m_price = 0.0;
Reflesh();
break;
}
}
6、Reflesh()代码:
void CCPtrListDlg::Reflesh()
{
int i;
m_sum = 0;
CString str,str1;
m_list.ResetContent();//清空列表框
if(!m_goodslist.IsEmpty())
{
POSITION pos = m_goodslist.GetHeadPosition();
for( i = 0; i<m_goodslist.GetCount(); i++)
{
CGoods* m_pGoods = (CGoods*)m_goodslist.GetNext(pos);
str1.Format("%.2f",m_pGoods->m_price);
str = "品名:"+m_pGoods->m_name+",单价:"+str1;
m_list.AddString(str);
m_sum += m_pGoods->m_price;
}
}
UpdateData(false);//把更新放在这里,适合。
}
注:
与数组不同,链表的位置用POSITION来标识。
向链表中添加元素:
CStringList m_list;
POSITION pos = m_list.AddHead(“Head”);
pos = m_list.InsertAfter(pos,”note1”);