就是要做一个电子地图,实现点的添加,删除,修改,查询功能,变量有XY坐标,点的ID,点的name。在MFC中编写,使用结构体数组,数组的容量没有固定值。调用数据通过接口函数。真心求解答,谢谢大家,急!!!
你好,可以稍微详细点吗,是否可以举个真实代码的例子。稍微多一点注释。万分感谢!
追答其实已经很详细了,CArray这样的工具类是很简单的,根据你的要求,只要掌握Add,InsertAt,SetAt,GetAt,RemoveAt 这几个函数就可以了。
那我稍微再改下:
Class MyPoint 或 struct MyPoint //定义点结构体
{
CPos m_pos ; //XY坐标;
UINT m_posID; //点的ID;
CString m_strPosName;点的NAME:
}
CArray m_arrMyPoint; //定义结构体类型数组
需要动态添加时
MyPoint point;
point.m_pos.x = 100;point.m_pos.y = 50; // 假设XY坐标为100,50
point.posID= 99; //点的ID
point.m_strPosName = "A点"; //点的name
添加:
m_arrMyPoint.Add(point); //将点结构体point加入数组末尾,
m_arrMyPoint.InsertAt(0,point); //将点结构体插入数组中0位置
删除:
m_arrMyPoint.RemoveAt(0,1); //从0位置起删除1个结构体
修改:
MyPoint newPoint; //新点结构
m_arrMyPoint.SetAt(0,newPoint); //将原位置为0的point 替换为 newpoint
或直接赋值:
m_arrMypoint.GetAt(0).m_strPosName = "B点"; //直接根据索引0修改该点名称
查询:
这个没有现成功能,自己写个条件遍历吧
for(int i=0; i<m_arrMyPoint.GetSize(); i++) //遍历整个数组
{
if(m_arrMyPoint.GetAt(i).m_strPosName == "X点") //假设查询数组中名称为X点的结构体
{
处理代码。。。 //可对该点属性进行任何处理
}
}
是这样,在MFC中我们做了一个界面,把需要添加的坐标,名称等信息添加到框中点击确定就可以添加了,是不是得用指针来做啊,因为每次添加的时候框中输入的数值是随机的。用指针的话得怎么写呢?万分感谢!
追答添加局部变量或指针都可以
AddFunction() //添加变量
{
MyPoint point;
m_arrMyPoint.Add(point); //将点结构体point加入数组末尾,
}
CArray m_arrMyPoint;//数组定义类型换成结构指针
AddFunction() //添加指针
{
MyPoint* pPoint = new MyPoint;
m_arrMyPoint.Add(pPoint); //将点结构体point指针加入数组末尾,不过用完记得释放
}
可以先写段测试代码,熟悉下CArray的增删改等功能