mit Maus ein halbtransparentes Rechteck aufspannen



  • Hallo, kann mir jemand einen Tip geben, wie man mit der Maus ein Transparentes Fenster bzw. Rahmen (wie auf dem Desktop) aufspannen kann?

    Die Funktionen um die Eckpunke zu bekommen sind nicht das Problem, sondern nur, dass der Benutzer den Rahmen sehen kann, bis er die Maustaste loslässt?!?!?



  • - GetDesktopWindow
    - Fenster subclassen
    - LButtonDown, MouseMove und LButtonUp abfangen

    Allerdings wird doch schon so ein Rechteck gezeichnet. Wieso dann nochmal?



  • Auf dem Desktop ja, aber nicht in meiner Anwendung.

    Der Benutzer soll auf einem bestimmten Bereich (Dialogfeld) eine Groesse ueber so ein aufgespanntes Rechteck definieren.



  • Ups, hab das 'wie' bei 'wie auf dem Desktop' überlesen!!

    Gut, vielleicht hilft Dir folgender Code weiter:

    class CMeinDlg
    {
    // ...
    CPoint m_ptDown, m_ptUp;
    };
    
    void CMeinDlg::OnLButtonDown( CPoint pt)
    {
        CRect rc( m_ptDown = pt, m_ptUp = pt);
        CClientDC dc( this);
        dc.DrawFocusRect( rc);
        SetCapture();
    }
    
    void CMeinDlg::OnLButtonUp( CPoint pt)
    {
        if( GetCapture() == this)
        {
            CClientDC dc( this);
            CRect rc( m_ptDown, m_ptUp);
            rc.NormalizeRect();
            dc.DrawFocusRect( rc);
            m_ptDown = rc.TopLeft();
            m_ptUp = rc.BottomRight();
            ReleaseCapture();
        }
    }
    
    void CMeinDlg::OnMouseMove( CPoint pt)
    {
        if( GetCapture() == this)
        {
            CClientDC dc( this);
            CRect rc( m_ptDown, m_ptUp);
            rc.NormalizeRect();
            dc.DrawFocusRect( rc);
            rc = CRect( m_ptDown, m_ptUp = pt);
            rc.NormalizeRect();
            dc.DrawFocusRect( rc);
        }
    }
    

    [ Dieser Beitrag wurde am 11.04.2003 um 09:42 Uhr von RenéG editiert. ]



  • Genial, das war genau das wonach ich suchte!!

    Besten Dank!


Anmelden zum Antworten