Button verschieben



  • Hallo

    Eigentlich ganz einfach. Wenn man weiß wie es geht 🙂

    Habe einen Button auf einem Dialog, den möchte ich gerne programmatisch verschieben. Weiß aber nicht genau wie.

    Habe da zwar was gefunden das funktioniert aber nicht so richtig:

    CRect rect;
    GetDlgItem(IDOK )->GetWindowRect( rect );
    ScreenToClient( rect );
    
    // OK Button verschieben
    if( move )
    {
    	rect.left += 30;
    	GetDlgItem(IDOK)->MoveWindow(rect);
    }
    else
    {		
    	rect.left -= 30;
    	GetDlgItem(IDOK)->MoveWindow(rect);
    }
    

    Mein Button verschwindet komplett!


  • Mod

    Der Code sieht OK aus.
    Er verschibt den OK Button nach links oder rechts um 30 Pixel.
    Wo hast Du den denn eingebaut?



  • Hallo

    void MyDlg::ShowCancelButton(int nCmdShow)
    {
    	GetDlgItem(IDCANCEL)->ShowWindow(nCmdShow);
    
    	CRect rect;
    	GetDlgItem(IDOK )->GetWindowRect( rect );
    	ScreenToClient( rect );
    
    	// OK Button verschieben
    	if( nCmdShow == SW_HIDE )
    	{
    		rect.left += 30;
    		GetDlgItem(IDOK)->MoveWindow(rect);
    	}
    	else
    	{       
    		rect.left -= 30;
    		GetDlgItem(IDOK)->MoveWindow(rect);
    	}
    }
    

    Also das ist mein ganzer Code. Wenn ich den Cancel Button ausblende soll der OK Button an diese Stelle verschoben werden.

    Wie gesagt der OK Button verschwindet aber komplett nachdem GetDlgItem(IDOK)->MoveWindow(rect); aufgerufen wurde


  • Mod

    Hmmm. Warum besorgst Du Dir nicht die Koordinaten des anderen Buttons, anstatt solch eine Pixel Berechnung durchzuführen.

    Aber eigentlich müsste es gehen.
    Schau doch mal mit Spy++ nach wo der Button ist!



  • Warum besorgst Du Dir nicht die Koordinaten des anderen Buttons, anstatt solch eine Pixel Berechnung durchzuführen.

    Recht hast. 👍

    Und ups. Es geht. Es ging auch vorher. Nur ich habe im Debugger nach dem Befehl:
    GetDlgItem(IDOK)->MoveWindow(rect);
    sofort gestoppt.

    Da hat er nichts mehr angezeigt. Ers wenn alles durchlaufen ist erscheint der Button wieder und sogar an der richtigen Stelle 🙂

    Dank dir!


Anmelden zum Antworten