Verschieb-Informationen



  • Hi @ All.

    ich möchte, wenn man das Fenster verschiebt, informationen erhalten, ob man das Fenster horizontal verschiebt oder vertikal oder beides.

    aber das will nicht funktionieren.
    Die Rückmeldung erhalte ich erstmal über ein Piepen.

    Aber er reagiert immer else.

    POINT pWindow;
    	case WM_CREATE:
    		ClientToScreen(hWnd, &pWindow);
    		return 0;
    
    	case WM_MOVE:
    		if (pWindow.x == LOWORD(lParam))
    		{
    			// Wird vertikal befegt
    		}
    		if (pWindow.y == HIWORD(lParam))
    		{
    			// wird horizontal bewegt
    			Beep(440,10);
    		}
    		else
    		{
    			// beides
    		}
    		pWindow.x = pWindow.y = 0;
    		ClientToScreen(hWnd, &pWindow);
    		return 0;
    

    Wisst ihr, was ich falsch gemacht habe?

    Danke.



  • Du musst WM_MOVING verwenden.



  • Servus,

    Speichere einfach beim Instanzstart des Objekts die Positionsdaten des Fensters in eine Membervariable.
    Anschliessend prüfst du bei WM_MOVE nur noch ob die Membervariable (nennen wir sie posXY als POINT structured variable) sich von der neuen Position unterscheidet.

    z.B. so

    if (posXY.x != LOWORD(lParam)) 
    {
       Cout << "horizontal bewegt << endl;
       posXY.x = LOWORD(lParam);
    }
    if (posXY.y != LOWORD(lParam)) 
    {
       Cout << "vertikal bewegt << endl;
       posXY.y = HIWORD(lParam);
    }
    

    MfG

    Wolf


Anmelden zum Antworten