Problem mit Fensterpositionierung



  • Hallo Leute.

    Folgendermassen positioniere ich mein Fenster:

    CRect myRect, desktop;
    GetDesktopWindow()->GetWindowRect(&desktop);
    GetWindowRect(&myRect);
    MoveWindow(0, (desktop.Height()/2) - (myRect.Height()/2), myRect.Width(), myRect.Height());
    

    Nun möchte ich folgendes:
    Wenn ich mit der Maus mein Fenster z.b. nach links bewege und den Bereich unter 50 Pixel erreiche, soll das Fenster automatisch an den Linken Rand positioniert werden.

    also so:

    CRect myRect, desktop;
    GetDesktopWindow()->GetWindowRect(&desktop);
    GetWindowRect(&myRect);
    if (blablablabla <= 50) 
    MoveWindow(0, (desktop.Height()/2) - (myRect.Height()/2), myRect.Width(), myRect.Height());
    

    Ich bekomm das nicht hin.

    Kann mir einer helfen ?



  • Habs nun fast hinbekommen:

    void CTestDlg::OnMoving(UINT fwSide, LPRECT pRect) 
    {
    	CDialog::OnMoving(fwSide, pRect);
    
    	CRect myRect, desktop;
    	GetDesktopWindow()->GetWindowRect(&desktop);
    	GetWindowRect(&myRect);
    
    	if (myRect.left < (desktop.left+50)) 
    
    	MoveWindow(0, myRect.top, myRect.Width(), myRect.Height());
    }
    

    nach dem loslassen der maus springt das fenster jedoch in die ursprüngliche position



  • ok ich habs OnMoving war falsch. OnMove richtig.

    es ist zwar noch nicht gantz sauber, da es flackert, wenn ich meinen dialog innerhalb der 50 pixel links bewege. aber es läuft schon mal- evtl. hat einer nen besseren code für mich ?!


Log in to reply