GetWindowRect liefert negative Werte



  • Hallo,

    wie oben gesagt hab ich da ein Problem mit GetWindowRect
    Ich erzeug mir ein Handle fuer ein Fenster

    hwnd = CreateWindow("msg_test","test", WS_OVERLAPPEDWINDOW |
    WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
    CW_USEDEFAULT, CW_USEDEFAULT,
    CW_USEDEFAULT, CW_USEDEFAULT,
    NULL, NULL, hInstance, NULL);

    if (!hwnd) return 1;

    danach will ich im Callback die position ermitteln
    RECT rect;
    .
    .
    case WM_PAINT:
    if (GetWindowRect(hwnd,&rect))
    {
    sprintf(amsg,"%s,%d,%d,%d,%d","WM_SIZE",rect.left,rect.top,
    rect.right,rect.bottom);
    fprintf(fptr,"%s",amsg);
    }

    und bekomm fuer rect.top einen negativen Wert z.B. -90 obwohl der
    sichtlich positiv ist.
    Verwende ich anstelle von CW_USEDEFAULT definierte Werte kommen
    auch die richtigen Werte zurueck.

    OS ist WIN98 mit 2 Bildschirmen dran



  • Und der zweite Bildschirm ist links, oder?



  • Jochen Kalmbach schrieb:

    Und der zweite Bildschirm ist links, oder?

    Wohl eher oben, wenn top negativ ist, oder? Ich hatte vorhin schon in diese Richtung gedacht, war mir aber nicht sicher, ob das Koordinatensystem sich in einem solchen Fall wirklich am Primary Display orientiert oder vielleicht doch immer so verschoben wird, dass es keine negativen Koordinaten im sichtbaren Bereich gibt...



  • Ein negativer rect bedeutet doch im allgemeinen das die "zeichenbare" fläche ausserhalb des sichtbaren bereich ist,...

    http://www.win-api.de/tutorials.php?tutid=16 schrieb:

    Die RECT Struktur speichert diesmal nicht die Maße des Fensters, sondern den Bereich, in den der Text gezeichnet werden soll. Wenn also nach unten gescrollt wurde, hat rect.top einen negativen Wert, damit der obere Teil nicht sichtbar ist und der untere zu sehen ist.

    grüße



  • Entschuldigung, ich meinte auch "keine negativen Koordinaten im sichtbaren Bereich" (hab es korrigiert).

    Aber hier geht es ja darum, dass ein 2. Monitor (erweiterter Desktop), der über dem Hauptbildschirm liegt, wahrscheinlich im negativen Bereich liegt, da die Koordinate 0,0 eben in der linken, oberen Ecke des Hauptbildschirms ist.



  • Jup,..wenn der 2te oberhalb ist könnte das sein,.. gruß



  • War ausser haus, danke fuer die raschen Antworten.
    Also der 2. ist rechts und hab das Prog. auch auf dem 2. gestartet.
    Wenn ich es auf dem primaeren starte ist alles normal.
    Gruss Holger



  • noch ein Nachtrag
    Der primaere hat 1280 x 1024
    Der sekundaere 1024 x 768


Anmelden zum Antworten