Probleme bei ermittlung der Fenstergröße



  • Guten Morgen, ich möchte mit

    CRect window;
    AfxGetMainWnd()->GetWindowRect(&window);
    TRACE("Fenster = %i %i %i %i\n",window.left, window.right, window.top, window.bottom);
    

    die größe meines Fensters bei einer SDI Anwendung ermitteln. Lieder bekomme ich immer unterschiedliche Werte und weis nicht warum. Kann mir jemand helfen ?

    Vielen Dank



  • Schieb das Fenster doch mal auf dem Bildschirm rum und beobachte, was die Werte machen. 😉

    Oder schau mal in die MSDN:

    void GetWindowRect( LPRECT lpRect ) const;
    

    Parameters

    lpRect

    Points to a CRect object or a RECT structure that will receive the screen coordinates of the upper-left and lower-right corners.

    Remarks

    Copies the dimensions of the bounding rectangle of the CWnd object to the structure pointed to by lpRect. The dimensions are given in screen coordinates relative to the upper-left corner of the display screen. The dimensions of the caption, border, and scroll bars, if present, are included.



  • Die Werte ändern sich.
    Wo ist eigentlich der Unterschied zwischen

    GetWindowRect(&window);
    

    und

    AfxGetMainWnd()->GetWindowRect(&window);
    

    beide liefern identische werte bis auf die top variable sind alle werte gleich.

    ich hab

    AfxGetMainWnd()->GetWindowRect(&window);
    

    in OninitUpdate reingetan ist das ein fehler gewesen ?

    Danke



  • basti_1984 schrieb:

    Die Werte ändern sich.
    Wo ist eigentlich der Unterschied zwischen

    GetWindowRect(&window);
    

    und

    AfxGetMainWnd()->GetWindowRect(&window);
    

    Der Unterschied ist, für welches Fenster dir die Werte gegeben werden.
    Von wo aus rufst du das obere denn auf? Aus welcher Klasse?

    Das untere gibt dir jedenfalls die Koordinaten des Hauptfensters. Welches das ist, hängt von deiner Anwendung ab (Dialog oder SDI oder MDI).



  • Greife von der CView Klasse drauf zu



  • Dann ist das beim View (also der obere Aufruf) vermutlich nur der Clientbereich, also ohne Titelzeile.
    Beim unteren ist die dann mit dabei.



  • So wir es sein
    Danke 😋


Anmelden zum Antworten