Größe eines Fenster ermitteln



  • Hallo, ich verschiebe ein Fenster mit der Funktion: MoveWindow

    Wenn das Fenster verschoben wird dann soll es jedoch die selbe Größe wie vorher haben. Wie kann ich ermitteln wie groß das Fenster ist welches ich verschieben möchte?

    Ich hatte es schon mit GetWindowRect versucht aber das gibt mir irgendwie keine Werte aus:

    Wobei ich sehe gerade das ist auch nur für die Koordinaten aber nicht für die Größe selbst. 😕

    PRECT rect;
    GetWindowRect ( h, rect);
    
    cout<<"top: " << rect->top << endl;
    cout<<"left: " << rect->left << endl;
    
    cout<<"right: " << rect->right <<endl;
    cout<<"bottom: " << rect->bottom <<endl;
    


  • PRECT ist nur ein Zeiger ?



  • 😃

    RECT rect;
    		GetWindowRect ( h, &rect);
    
    		cout<<"top: " << rect.top<< endl;
    

    thx



  • Aber wie kriege ich das jetzt hin das sich die Fenstergröße nicht ändert?
    Ich hab mit den Variablen aus RECT schon alles mögliche probiert aber irgendwie krieg ich es nicht hin. 😡

    Die Doku hat mir auch nicht wirklich weitergeholfen.
    https://msdn.microsoft.com/de-de/library/windows/desktop/dd162897(v=vs.85).aspx

    Oder muss ich für mein vorhaben eine andere Funktion verwenden?
    Ich hab so das Gefühl das ich die Doku nicht richtig verstehe ...

    HWND h = FindWindow(0, lpWindowName );
    
    		RECT rect;
    		GetWindowRect ( h, &rect);
    
    		MoveWindow(h,20,20,rect.right,rect.top,false);
    
              // 
    	  //	MoveWindow(h,20,20,rect.left,rect.right,false);
    	  //	MoveWindow(h,20,20,rect.top,rect.bottom,false);
    
    	  //	 MoveWindow(h,20,20,rect.right,rect.left,false);
    	  //	   MoveWindow(h,20,20,rect.bottom,rect.right,false);
    


  • Eigentlich sollte das mit einer einfachen Suche schnell zu finden sein 😉

    Den Benutzer mit festen Vorgaben zu gängeln ist meist kein guter Programmierstil.

    Wenn man unbedingt will geht es auf verschiedenste Weise:

    1. Beim Anlegen des Fensters Flags wie WS_THICKFRAME weglassen

    2. WM_GETMINMAXINFO verwenden um Minimum und Maximum Fenstergroesse festzulegen

    3. Die Messages WM_SIZING und WM_MOVING abfangen

    Besser wäre aber dem Beutzer die Wahl von Grösse und Position zu ermöglichen ...



  • Das Problem ist das ein Fenster von einer Anwendung bewegt wird die ich nicht entwickelt habe. Es wird einfach ein x beliebiges Fenster verschoben und das soll dann die Größe beibehalten. Daher muss ich irgendwie von dem Fremden Fenster die Größe auslesen.



  • RECT rect;
            GetWindowRect ( h, &rect);
    
            MoveWindow(h,20,20,rect.right - rect.left, rect.bottom - rect.top,false);
    

Anmelden zum Antworten