Bildschirmgröße

  • Hi,

    hat jemand eine Ahnung, wie man herausbekommen kann, wie groß der aktuelle Bildschirm unter GEOS ist? Bei 800x600 passen bestimmte Dialoge nicht auf den Schirm, so das ich sie abwandeln muss.

    LG
    Rainer

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

  • Hallo Rainer

    Im GeoLadder verwendet ich folgendes:

    Code
      // Get the video resolution
     @call application::MSG_GEN_GUP_QUERY(&grp, GUQT_FIELD);
     WinGetWinScreenBounds(grp.GRP_bp, &g.ns.screen);
    bolle732
    August 2, 2024 at 3:10 PM
    jpolzfuss
    July 30, 2024 at 10:43 PM

    Gruss
    Andreas

  • Supi, das klingt doch nach nem Plan.
    Die Schreensaver scheinen die Bounds als Instancevariable SAI_bounds der SaverAplicationClass schon direkt zu bekommen. Aber da kann man sicher noch mal graben, wenn das oben nicht gehen sollte.

    Rainer

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

  • Das hilft dir leider auch nicht, da einige Grafikmodi z.B. einfach nur „Simple 4-Bit Greyscale Driver“ heißen und gar keine Größenangaben enthalten. Mal davon abgesehen, dass du dann in der Geos.ini auch noch nachschauen müsstest, ob der Nutzer die maximal nutzbaren Pixel noch weiter eingeschränkt hat (Zoomer-Emulator, 16:9 mit einem 4:3 Treiber etc.).

    There are two rules in life:
    1. Never give out all of the information.

  • So hier ein kurzes Feedback.

    Code
    GenReturnParams grp;
    @call application::MSG_GEN_GUP_QUERY(&grp, GUQT_FIELD);
    WinGetWinScreenBounds(grp.GRP_bp, &bounds);

    Funktioniert ohne Probleme. Vielen Dank.

    Die in einem Thread erwähnte Verwendung von

    Code
    @call application::MSG_GEN_APPLICATION_GET_DISPLAY_SCHEME(&displayScheme);

    ist für meine Zwecke nicht brauchbar, da alle Bildschirmauflösungen ab 600x800 die Größe DS_LARGE liefern - ich kann also 800x600 nicht von 1024x786 unterschieden.

    Die Variante

    Code
    @call application::MSG_VIS_GET_BOUNDS(&bounds);

    geht nur, nachdem @callsuper in der MSG_GEN_PROCESS__OPEN_APPLICATION ausgeführt wurde (vorher sind die Bounds Null). Das nützt mir insofern nicht, weil dann das Primary schon eine Größe hat und sich nicht automatisch verkleinert.

    LG
    Rainer

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.