Anwendungsbereichgröße genau angeben



  • Hallo,

    ich möchte gerne den Anwendungsbereich im Fenster bis aufs Pixel genau angeben.

    Leider weiß ich nicht wie das geht. Denn mit MoveWindow z.B. wird ja das Fenster mit Rahmen, Menü (?) etc. geformt. Aber ich brauche eben ein Fenster, dass einen Anwendungsbereich von x und y hat.

    Wenn ich z.B. ein Bitmap mit 200 * 300 habe, möchte ich dieses eben in den Bereich reinpacken. Es soll nicht gestreckt / gestaucht werden, sondern an 0|0 eingefügt werden. Es soll natürlich bis aufs Pixel vollständig zu sehen sein.
    Demnach soll der Anwendungsbereich auch 200 * 300 sein.

    Für Hilfe wäre ich dankbar 🙂



  • AdjustWindowRect



  • wie man das macht haben sich wohl schon generationen von windows-programmierern gefragt. ich habe auf diese frage bis jetzt auch noch keine wirklich befriedigende antwort gefunden. AdjustWindowRect() ist müll. am besten, du machst das fenster resizeable.



  • Wieso ist das Müll? Funktioniert doch!? 😕



  • Ich mag die Funktion auch nicht.

    Ich benutze immer dieses:

    void SetClientSize(HWND hWnd, int cx, int cy)
    {
       RECT wiRt;
       RECT clRt;
       int diff_x, diff_y;
    
       GetWindowRect(hWnd,&wiRt); // Fenster-Größe holen
       GetClientRect(hWnd,&clRt); // Client-Größe holen
    
       wiRt.right=wiRt.right-wiRt.left; // wiRt.right soll Fensterbreite sein
       wiRt.bottom=wiRt.bottom-wiRt.top; // wiRt.bottom soll Fensterhöhe sein
    
       diff_x=wiRt.right-clRt.right; // Fensterbreite-Clientbreite
       diff_y=wiRt.bottom-clRt.bottom; // Fensterhöhe-Clienthöhe
    
       SetWindowPos(hWnd,NULL,0,0,(diff_x+cx),(diff_y+cy),SWP_NOMOVE|SWP_NOZORDER);
    }
    

Log in to reply