Я пытаюсь нарисовать прямоугольник на виде.Когда пользователь удерживает левую кнопку во время перемещения мыши, он должен показывать форму, но не рисовать, пока не будет отпущена левая кнопка мыши (что-то вроде Paint).
Моя текущая проблема заключается в том, что когда я перемещаю мышь с помощьюлевая кнопка вниз, она рисует прямоугольник в каждой позиции, в которую перемещается моя мышь.Таким образом, на экране появляются тонны прямоугольника.
Я хочу знать, как удалить предыдущий, когда моя мышь переместилась на новую позицию или мой подход совершенно неправильный.
Iтолько ограниченный опыт из проекта каракулей.
void CMFCCalView::OnLButtonUp(UINT nFlags, CPoint point)
{
if (GetCapture() != this) {
return;
}
CMFCCalDoc *pDoc = GetDocument();
CClientDC dc(this);
CPen *oldPen = dc.SelectObject(pDoc->getCurrentPen());
currShape->setEnding(point);
pDoc->m_shapeList.AddTail(currShape);
dc.SelectObject(oldPen);
ReleaseCapture();
return;
}
void CMFCCalView::OnLButtonDown(UINT nFlags, CPoint point)
{
CClientDC dc(this);
CMFCCalDoc *pDoc = GetDocument();
currShape = pDoc->newShape();
currShape->setBegining(point);
// pDoc->debug.Format(_T("Shape : %d"),currShape->getShape());
SetCapture();
prePoint = point;
return;
}
void CMFCCalView::OnMouseMove(UINT nFlags, CPoint point)
{
if (GetCapture() != this) return;
CClientDC dc(this);
CPen *oldPen = dc.SelectObject(GetDocument()->getCurrentPen());
currShape->setEnding(point);
currShape->drawShape(&dc);
dc.SelectObject(oldPen);
prePoint = point;
return;
}