Punkt verschieben mit Maus



  • Ich habe in einer View (oder auch im Doc) einen Punkt, den ich
    in OnDraw anzeige.

    Ich möchte den Punkt mit der Maus verschieben, also mit der li. MT
    anpacken und an eine neue Position ziehen.

    Ich weiß, dass es dafür CRectTracker gibt. Aber mit der Hilfe komme
    ich nicht weiter.
    Hat jemand dafür einen Hinweis oder ein Beispiel?

    Glück auf und danke!



  • Ich hab jetzt eine simple Lösung (noch ohne InvalidateRect()
    und ohne CRectTracker):

    void CPunktfangView::OnLButtonDown(UINT nFlags, CPoint point)
    {
    if (Kugel.x<point.x+5&&Kugel.x>point.x-5
    &&Kugel.y<point.y+5&&Kugel.y>point.y-5)
    {
    m_bTreffer=TRUE;
    m_crFarbe=RGB(255,0,0);
    }
    else MessageBeep(0xFFFFFFFF);
    Invalidate();
    }

    void CPunktfangView::OnLButtonUp(UINT nFlags, CPoint point)
    {
    if (m_bTreffer)
    {
    m_bTreffer=FALSE;
    m_crFarbe=RGB(0,255,0);
    Kugel=point;
    }
    Invalidate();
    }

    void CPunktfangView::OnMouseMove(UINT nFlags, CPoint point)
    {
    if(m_bTreffer)
    {
    Kugel=point;
    Invalidate();
    }
    }



  • Wozu willst du CRectTracker verwenden? Ist doch optimal, Dein Code (naja, fast optimal)



  • Danke fürs Lob, René!
    Mich interessierte halt CRectTracker



  • Wenn du jetzt noch das flackern vermeiden willst benutze einfach einen CMemDC. Findest du auf www.codeguru.com oder www.codeproject.com . FUnktioniert ganz einfach und erzeugt keinen großen Rechenaufwand, da nur ein Bitmap geschrieben und angezeigt wird. Durch die BitBlt-Funktionen wird aber das lästige Flackern beim neuzeichnen vermieden... Probiers aus...


Anmelden zum Antworten