声明变量:
struct MyRangeStruct{
int n_indext;
long long n_start;
long long n_end;
int len;
};
CList<MyRangeStruct, MyRangeStruct&> AllRangeList;
初始化CList:
void CMFCcodeDlg::InitMacRangeList(void)
{
int n_max = dest.GetSize();
int n_len_temp = 0, n_index_temp = 0;
for (int i = 0; i < n_max; i++)
{
MyRangeStruct my_RangeStruct;
my_RangeStruct.n_indext = n_index_temp + n_len_temp;
n_index_temp = my_RangeStruct.n_indext;
ParseCString(dest[i], my_dest, '-');
if (my_dest.GetSize() > 1)
{
my_RangeStruct.n_start = Hex2Dec(my_dest[0]);
my_RangeStruct.n_end = Hex2Dec(my_dest[1]);
my_RangeStruct.len = my_RangeStruct.n_end - my_RangeStruct.n_start + 1;
n_len_temp = my_RangeStruct.len;
} else if (my_dest.GetSize() == 1)
{
my_RangeStruct.n_start = Hex2Dec(my_dest[0]);
my_RangeStruct.n_end = Hex2Dec(my_dest[0]);
my_RangeStruct.len = my_RangeStruct.n_end - my_RangeStruct.n_start + 1;
n_len_temp = my_RangeStruct.len;
}
AllRangeList.AddTail(my_RangeStruct);
}
}
从List中取元素:
MyRangeStruct myRS;
POSITION pos = AllRangeList.GetHeadPosition();
AllRangeList.GetNext(pos);
while(pos!=NULL)
{
myRS = AllRangeList.GetNext(pos); //pos 指定的值不变
myRS = AllRangeList.GetAt(pos); //取得下一个pos的值
}