代码如下:   
struct Point 
{int x;int y; 
}; //头文件里定义的结构体
  
void CCalibrationDlg::OnCalibration() 
{         CString TextX; 
        CString TextY;         const int nItemsX = m_ListBox4.GetCount(); 
        const int nItemsY = m_ListBox5.GetCount(); 
    
    
    CArray <Point,Point> Array; 
    Point pt; 
    for (int i = 0; i < nItemsX; i++ ) 
  { 
    m_ListBox4.GetText(i, TextX); 
    m_ListBox5.GetText(i, TextY); 
    
    pt.x = ::atoi(TextX); 
    pt.y = ::atoi(TextY); 
    Array.Add(pt);  // 插入数组    } 
}这样已经把两个分别存放 X  Y 坐标的listbox控件中的数值存到了 Array中
我想问一下 X Y 的值在 Array中式如何分布的?能帮我解释下  CArray <Point,Point> Array  中两个Point分别什么意思吗?  我电脑里没有MSDN···再请教一下 我该如何检验 Array中数值的正确性?谢谢!! 

解决方案 »

  1.   

    CArray中一个元素就是一个point结构体呀, array[0].x  array[0].y ,但是楼主最好用CPoint, 它重载了= copy构造函数!
      

  2.   

    ps:楼主, 还得学学模板, CArray <Point,Point> Array 就是模板用法!
      

  3.   


    第一个是类型,表示是Point,第二个是存储的方式,像你这种方式CArray 会复制一份,如果用CArray <Point,&Point> Array,那么你添加到  CArray的对象的作用域要跟CArray的一致,
      

  4.   


    恩谢谢!你的意思是:
    CArray <CPoint,CPoint> Array; 
        CPoint pt; 
        for (int i = 0; i < nItemsX; i++ ) 
      { 
        m_ListBox4.GetText(i, TextX); 
        m_ListBox5.GetText(i, TextY); 
        
        pt.x = ::atoi(TextX); 
        pt.y = ::atoi(TextY); 
        Array.Add(pt);  // 插入数组   } 
    恩 我这些天才接触MFC VC 但是这个任务比较紧 就看一点写一点  很乱多亏CSDN的大侠们帮忙!那 我这里是把  我要的 X  Y 坐标都存到 Array中了吗?
    他们是怎么分布的啊?其中的X  Y 的值是整型吗?
    谢谢
      

  5.   

    CArray <CPoint,CPoint> Array; 
        CPoint pt; 
        for (int i = 0; i < nItemsX; i++ ) 
      { 
        m_ListBox4.GetText(i, TextX); 
        m_ListBox5.GetText(i, TextY); 
        
        pt.x = ::atoi(TextX); 
        pt.y = ::atoi(TextY); 
        Array.Add(pt);  // 插入数组   } 
    /////////////////////////我想取出Array中的元素进行检查 是否正确
    CString k;
    int t=ArrayX.GetAt(0);
    k.Format("%d",t);
    AfxMessageBox(k); }error C2440: 'initializing' : cannot convert from 'class CPoint' to 'int'
            No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
    Error executing cl.exe.Calibration.exe - 1 error(s), 0 warning(s)
    还请大家帮忙那!我想知道Array中  我需要的 X Y 的排列方法!还有如何取出坐标值进行检查 是否正确
      

  6.   

    明显类型不对
    int t=ArrayX.GetAt(0); 改成 CPoint = ArrayX.GetAt(0); 
      

  7.   


            CString k;
    int t=ArrayX.GetAt(2).x;
    k.Format("%d",t);
    AfxMessageBox(k);int t=ArrayX.GetAt(0); 改成int t=ArrayX.GetAt(0).x;
    就能通过运行了  只是 显示的值永远是 0 
      

  8.   


             CArray <CPoint, CPoint> Array; 
     CPoint p;
             p = CPoint(34, 2);
     Array.Add(p);  CPoint p1 = Array.GetAt(0);
     CString str;
     str.Format(L"%d, \"%d", p1.x, p1.y);
     ListBox1.AddString(str);  我测试没问题