-1

私は描画ツールの小さなプロジェクトをやっています。

line を使用してポリゴンを描画するためCList<CPoint,CPoint> m_Points、各ラインの終点を格納するために使用します。

これが私のコードです:

void CDrawToolView::OnLButtonUp(UINT nFlags, CPoint point)
{
   .
   .
   .
   CList<CPoint,CPoint> m_Points; 
   m_Points.AddTail(point);
   . 
   .
   .
}

そして、ポイントをダイアログに渡したいです。呼び出し関数で:

void CDrawToolView::OnEditProperty()
{
    CPropertyDlg dlg;  
    dlg.Points = m_Points;
    if (dlg.DoModal() == IDOK)
    {   
        m_Points = dlg.Points;
    }
}

次に、ダイアログで [OK] をクリックすると、 からすべてのポイントが読み取られCList<CPoint,CPoint> Pointsます。

void CPropertyDlg::OnBnClickedOk()
{
    CList<CPoint,CPoint> Points; 
    Points.AddTail(polypoint);
    POSITION pos = Points.GetHeadPosition();
    while( pos != NULL )
    {
       int i = 0;
       element = Points.GetNext(pos);
       polygon_x[i] = element.x;
       polygon_y[i] = element.y;
       i ++;
    }
}

プログラムを実行しているときCObject::operator =' : cannot access private member declared in class 'CObject'、どうすればその問題を解決できますか?

また、このメソッドを使用してポイントをダイアログに渡すことはできますか?

4

1 に答える 1

0

CPropertyDlgm_Pointsのメンバーを次のように宣言CList<CPoint,CPoint>*し、このダイアログへのポインターを渡します。

void CDrawToolView::OnEditProperty()
{
    CPropertyDlg dlg;  
    dlg.Points = &m_Points;
    if (dlg.DoModal() == IDOK)
    {   
        //m_Points = dlg.Points;   // not necessary because Points is changed in-place
    }
}

CListオブジェクト全体をコピーする必要がある、値渡ししようとしている既存のコードの問題。operator=これは、プライベートにすることによって MFC 作成者によって許可されていません。

ところで、描画機能を実装しようとしている場合は、MFC サンプルの DRAWCLI を確認してください。

于 2013-09-08T13:55:37.807 に答える