Button move wird nicht angezeigt



  • Zu meinen Problem ich habe in der WndProc unter WM_CREATE mehrere Button erstellt und die Wert als die Id und den Handle in einen Vector gespeichert.
    Wie Button sind so angeordnet:

    ErsteInst
     ZweiteInst
      DritteInst
      DritteInst
    ErsteInst
     ZweiteInst
      DritteInst
     ZweiteInst
    

    Wenn ich jetzt z.B. auf ZweiteInst drücke Speiche ich das alle Button die nach diesen kommen nicht mehr angezeigt werden.

    ErsteInst
     ZweiteInst<-- Wird gedrückt
      DritteInst
      DritteInst
    ErsteInst
     ZweiteInst
      DritteInst
     ZweiteInst
    

    ➡

    ErsteInst
     ZweiteInst
    
    ErsteInst
     ZweiteInst
      DritteInst
     ZweiteInst
    

    Jetzt hab ich aber 2 Leerzeilen die weg sollen.
    Also habe ich in der WM_COMMAND am Ende noch das hier eingefügt:

    SendMessage(hWnd, WM_PAINT, wParam, lParam);
    

    Um in der WM_PAINT das hier:

    for (auto& buttonList : buttons)
    		{
    			for (auto& button : buttonList)
    			{
    				RECT buttonScreenRect;
    				GetWindowRect(button.handle, &buttonScreenRect);
    
    				POINT buttonClientPoint;
    				buttonClientPoint.x = buttonScreenRect.left;
    				buttonClientPoint.y = buttonScreenRect.top;
    
    				ScreenToClient(button.handle, &buttonClientPoint);
    
    				MoveWindow(button.handle, buttonClientPoint.x, currendHeight , buttonScreenRect.right - buttonScreenRect.left, buttonScreenRect.bottom - buttonScreenRect.top, false);
    				currendHeight += 20;
    			}
    		}
    

    Jetzt wird mir aber ohne das ich überhaupt was gedrückt habe das hier angezeigt:

    ErsteInst
    ZweiteInst
    DritteInst
    DritteInst
    ErsteInst
    ZweiteInst
    DritteInst
    ZweiteInst
    

    Also die Formatierung ist komplett weg und wenn ich auf Button drück sieht das fast so aus es eingefroren ist also ich kann meine Button mehr drücken mit Ausnahme der System Menü Button.

    Weiß jemand was ich falsch mache?
    Kann ich das ganze eigentlich auch ohne globale Variablen oder static machen?

    Falls noch Fragen sind bitte Melden.



  • EDIT: Das alles eingefroren ist lag daran das ich currendHeight nicht wieder auf 0 gesetzt hab.
    Jetzt hab ich wieder die zwei Leerzeilen aber das ganze wird irgendwie nicht neu gezeichnet wie mache ich das?



  • OK hat sich schon erledigt. Der ganze Code war müll 😃


Anmelden zum Antworten