(VC++ 6) Relative Koordinaten



  • Hey,

    ich habe eine schätzungsweise sehr einfache Frage, aber im Moment komme ich wirklich nicht auf die Lösung.
    Wie bekomme ich in MFC die Koordinaten eines Steuerelementes relativ zum Parent-Dialog?
    GetWindowRect liefert mir ja afaik die Koordinaten relativ zum Monitor, und GetClientRect hilft mir hier ja auch nicht weiter.

    Ich habe auch versucht, mittels GetWindowRect die Position des Dialoges sowie des Steuerelementes abzurufen, um an die relativen Koordinaten mit einer Subtraktion zu kommen. Das klappt allerdings auch nicht. Kann mir jmd. helfen?



  • MapWindowPoints, ScreenToClient, ClientToScreen...

    eins davon könnte es sein. 😉



  • Danke für die schnelle Antwort.
    Am meisten hat mich MapWindowPoints überzeugt 😉
    Doch die Probleme bleiben. Mein Ziel: Wenn der Dialog seine Größe ändert, soll ein bestimmtes Child-Steuerelement vom Typ CStatic seine Größe mit-verändern, sodass immer ein gewisser Teilbereich des Parent damit ausgefüllt ist.
    Deshalb habe ich den Parent-Dialog wie folgt um OnSize erweitert:

    void CTestDlg::OnSize(UINT nType, int cx, int cy) 
    {
    	CDialog::OnSize(nType, cx, cy);
    
    	RECT trect;
    	if(m_MainView)
    	{
    		m_MainView.GetWindowRect(&trect);
    		m_MainView.MapWindowPoints(this,&trect);
    		m_MainView.MoveWindow(trect.left,trect.top,cx-20,cy-20,true);
    	}
    
    }
    

    Rein vom Prinzip her müsste das doch so funktionieren, oder? 😕
    Oder liege ich falsch?



  • Weit kannst nicht daneben liegen, ich mach das immer so:

    CRect rClient;
    GetClientRect(&rClient);
    GetDlgItem(IDC_DEIN_BUTTON)->MoveWindow(rClient.left,rClient.top,rClient.right-rClient.left,rClient.bottom-rClient.top);
    

    Das is jetzt halt ein bisschen ein großer Button 🙂

    Keine Ahnung ob die Koordinaten in deiner OnSize und die von GetWindowRect ident sind oder ob du da mit ScreenToClient (...) und ClientToScreen(...) arbeiten musst.



  • Mhmm danke aber ich habe es leider immernoch nicht...
    Sobald ich die Größe des Dialoges auch nur um ein paar Pixel ändere, bewegt sich die PictureBox mit großen Schritten ins Abseits des Dialoges. Falls jemand noch einen Tipp hat, würde mich das sehr freuen.


Anmelden zum Antworten