xmax??



  • Hallo.

    Wie kann ich die gesammte Länge und Breite eines Bildschirms nutzen?? (x_max oder so vielleicht??)

    Danke.



  • Moin,
    so wie ich dich verstanden hab, willst du eine Anwendung schreiben, die sich automatisch auf die breite des Bildschirms einstellt.
    und das geht z.b. so:

    CRect rectOrginal;
    GetClientRect(&rectOrginal);
    ShowWindow(SW_SHOWMAXIMIZED); //Fenster maximieren um gesamtgröe ermitteln
    CRect rectGesamt;
    GetClientRect(&rectGesamt);
    SetWindowPos(NULL, 0,0,rect.Width(),rectOrginal.rect.Height(), NULL);
    

    Das Programm wird jetzt ganz oben auf dem Bildschirm mit der Orginal Höhe und maximaler Breite angezeigt.

    Einziger haken der Sache, beim Programmstart flimmert das Programm einmal über den ganzen Bildschirm es ist auch nicht die eleganteste Lösung, aber sie funktioniert.



  • @Emperor_LOser
    Woher hast Du denn nun diesen Code wieder?

    Einziger haken der Sache, beim Programmstart flimmert das Programm einmal über den ganzen Bildschirm es ist auch nicht die eleganteste Lösung, aber sie funktioniert.

    Zweiter Haken ist ausserdem, dass Du Dir die Clientgrösse des Fensters holst, und damit die Fenstergrösse setzt.

    Fazit: Schmeiss den Code weg. Hier im Forum gibts auch genug Beiträge, wie man wirklich die Screengrösse ermittelt!



  • @RenéG
    Halo?
    Ich weiss ja nicht ob du den ganzen code gesehen hast

    Original erstellt von Emperor_L0ser:
    **Moin,
    [code type="C++"]
    ShowWindow(SW_SHOWMAXIMIZED); //Fenster maximieren um gesamtgröe ermitteln
    **

    aber mit der Zeile wird die Clinetgröße gleich der Auflösung und damit funktioniert es.
    Das es nicht elegant hab ich ja schon gesagt. Ich weiss aber auch das es funktioniert, da ich es mal in nem test-programm benutzt hab.

    Aber wie wärs wenn Mr. Oberschlau mal anfängt ne lösung zu präsentieren und nicht nur sagt wie es nicht zu machen ist.

    [ Dieser Beitrag wurde am 08.05.2003 um 18:48 Uhr von Emperor_L0ser editiert. ]



  • Ganz verstehe ich deine Code auch nicht.
    Warum willst du das Fenster auf MAX Bildschirm setzten
    SetWindowPos(NULL, 0,0,rect.Width(),rectOrginal.rect.Height(), NULL);

    Wenn du es mit
    ShowWindow(SW_SHOWMAXIMIZED);

    Schon gemacht hast



  • @Emperor_L0ser

    Nein, es ist wohl eher so, dass Du nicht verstanden hast, was ich geschrieben habe!
    Du holst Dir mit GetClientRect die Clientkoordinaten, welche aufgrund des Rahmens und möglicherweise der Titelleiste, die das Fenster besitzt, IMMER KLEINER als das wirkliche Fenster ist.
    Und danach setzt Du mit diesen Koordinaten die Grösse des Fensters. Da das Fenster an Position (0,0) gesetzt wird, entsteht damit ein Abstand von mind. 4 Pixeln an der unteren und rechten Seite zum Screenrand.

    Wenn man den Clientbereich auf Screen vergrössern will, muss man nur mit ShowWindow(SW_SHOWMAXIMIZED) das Fenster maximieren und dann mit ModifyStyle( WS_CAPTION|WS_THCIKFRAME, 0) Rahmen und Titelleiste löschen.



  • Ich rufe SetWindowPos auf, da goag ja nur die Horizantale aufs maximum haben will und nicht den ganzen Bildschirm ausfüllen will



  • Wie kann ich die gesammte Länge und Breite eines Bildschirms nutzen??

    Bitte richtig lesen!



  • mein vorhergehender beitrag ging an unix-tom, dein beitrag stand noch nicht auf der seite, als ich meinen zu schreiben anfing.
    ok, habs jetzt auch verstanden was du meinst, aber warum schreibst du das nicht gleich das der rahmen nicht zum clientbereich gehört, bisher hatte ich das jedenfalls angenommen und auch noch keine probleme damit gehabt.

    und eine sache steht immer noch aus. deine lösung dazu 😞



  • und eine sache steht immer noch aus. deine lösung dazu

    Sihe mein vorletzter Beitrag



  • CWnd* desktop=GetDesktopWindow( );
    CRect desktoprechteck;
    desktop->GetWindowRect(&desktoprechteck);
    // Jetzt hast Du Breite und Höhe:
    int breite=desktoprechteck.right;
    int hoehe=desktoprechteck.bottom;
    //oder gleich die Fenstergröße setzen:
    MoveWindow(&desktoprechteck);
    

    🙂


Anmelden zum Antworten