首页 > 解决方案 > MFC 使用指针数组的正确方法?

问题描述

我是 MFC 的新手,正在尝试解决这个 MFC 线条绘制问题,但我一直遇到访问问题。首先,这是个问题。

  1. 通过使用鼠标左键拖动,画一条线。(意思就像在App Paint上画线)
  2. 所有的行都应该存储在数组中。
  3. 当客户端窗口大小发生变化时,不应删除所有行。

我想要做的是,创建一个线类。

CLine.cpp

#include "pch.h"
#include "CLine.h"

CLine::CLine()
{
    m_start = NULL;
    m_end = NULL;
}

void CLine::draw(CDC* pDC) 
{
    pDC->MoveTo(m_start);
    pDC->LineTo(m_end);
}

在我创建的 ChildView.h 中,

int LineCount;
CLine* CLine[100];

子视图.cpp

void CChildView::OnPaint() 
{
    CPaintDC dc(this);

    if (LMouseDown)
    {
        for (int i = 0; i <= LineCount; i++)
        {
            CLine[i]->draw(&dc);
        }
    }
}

void CChildView::OnLButtonDown(UINT nFlags, CPoint point)
{
    CLine[LineCount]->m_start = point;
    CLine[LineCount]->m_end = point;
    LMouseDown = true;

    CWnd::OnLButtonDown(nFlags, point);
}

void CChildView::OnMouseMove(UINT nFlags, CPoint point)
{
    if (LMouseDown)
    {
        CLine[LineCount]->m_end = point;
    }

    CWnd::OnMouseMove(nFlags, point);
}

void CChildView::OnLButtonUp(UINT nFlags, CPoint point)
{
    if (LMouseDown)
    {
        CLine[LineCount]->m_end = point;
        LMouseDown = false;
        LineCount++;
    }

    CWnd::OnLButtonUp(nFlags, point);
}

当我运行此代码时,只要单击窗口上的某个位置,就会出现错误Exception thrown: write access violation

为了正确使用这个数组来保存我的线路信息,我该怎么做?

标签: c++arrayspointersmfc

解决方案


推荐阅读