WM_MOVE



  • Hallo...

    Möchte gerne die aktuelle Fenster-Position abfragen.
    Wenn das Fenster verschoben wird dann wird doch anschließend eine
    WM_MOVE - Nachricht gesendet oder ?

    Wenn ich das richtig verstanden habe ist in
    LOWORD(lParam) die X Position,
    HIWORD(lParam) die Y Position,

    doch irgentwie tut sich nicht sehr viel bekomme immer den gleichen
    Wert zu sehen nämlich irgentein Minuswert was aber eigentlich doch nicht
    sein kann oder ?

    Und hier ein Stück vom Code:

    case WM_MOVE:
    WinPos.x= LOWORD(lParam);
    WinPos.y= HIWORD(wParam);
    break;
    case WM_PAINT:
    hdc = BeginPaint(hwnd, &ps);

    TextOut(hdc, 10,10,szBuffer , wsprintf(szBuffer,
    "X-Pos.: %d; Y-Pos.: %d.", WinPos.x, WinPos.y));

    EndPaint(hwnd, &ps);
    break;



  • keine Ahnung, ob es damit zusammen hängt:

    MSDN-Library schrieb:

    xPos = (int)(short) LOWORD(lParam);   // horizontal position 
    yPos = (int)(short) HIWORD(lParam);   // vertical position
    

    WinPos ist static, oder?



  • static POINTS WinPos;

    case WM_MOVE:
    WinPos.x= LOWORD(lParam);
    WinPos.y= HIWORD(wParam);

    UpdateWindow(hWnd);
    break;



  • WinPos.y= HIWORD(wParam);

    Da sieht auf jeden Fall mal falsch aus



  • Joop
    wParam muss lParam sein... kleiner Tippfehler.

    Jetzt hab ich auch gesehen was ich noch vergessen hab.
    Ich muss natürlich den Client-Bereich für ungültig erklären damit ich ne
    neue Ausgabe meiner Werte bekomme und zwar nicht mit UpdateWindow()
    sondern mit InvalidateRect().

    THX für die Antworten.


Anmelden zum Antworten