Verschieb-Problem



  • Hi @ All.

    ich habe es so gemacht, dass das Fenster beim Ziehen verschieben soll.

    Aber das geht nicht!

    hier meine Msg-Loop:

    RECT rClient;
    	POINT pWindow, pMouse;
    	case WM_MOUSEMOVE:
    		if (MK_LBUTTON == wParam)
    		{
    			GetClientRect(hWnd, &rClient);
    			pWindow.x = rClient.left;
    			pWindow.y = rClient.top;
    			pMouse.x = LOWORD(lParam);
    			pMouse.x = HIWORD(lParam);
    			SetWindowPos(hWnd, NULL,
    						 pWindow.x+pMouse.x-pMouseOld.x, pWindow.y+pMouse.y-pMouseOld.y,
    						 0, 0,
    						 SWP_NOSIZE);
    		}
    		pMouseOld.x = LOWORD(lParam);
    		pMouseOld.x = HIWORD(lParam);
            return 0;
    

    thx.



  • Script-Styler schrieb:

    Aber das geht nicht!

    🙄



  • was denn?

    das funktioniert nicht.

    wie soll ich das denn machen?



  • Script-Styler schrieb:

    wie soll ich das denn machen?

    Für's erste solltest du mal eine ordentlich Fehlerbeschreibung abliefern. "Funktioniert nicht" ist jedenfalls keine.



  • MFK schrieb:

    Script-Styler schrieb:

    wie soll ich das denn machen?

    Für's erste solltest du mal eine ordentlich Fehlerbeschreibung abliefern. "Funktioniert nicht" ist jedenfalls keine.

    dooch!

    aber gut:
    wenn ich das anwende, dann verschiebt er sich einfach wo anders hin, oder garnicht.

    was mache ich falsch? nehme ich die Fensterposition falsch auf oder warum macht er sowas?

    danke.



  • The GetClientRect function retrieves the coordinates of a window's client area. The client coordinates specify the upper-left and lower-right corners of the client area. Because client coordinates are relative to the upper-left corner of a window's client area, the coordinates of the upper-left corner are (0,0).



  • wie soll ich denn dan die Fensterkoordinaten bekommen?



  • Was willst du eigentlich?
    Dass das Fenster überall, auch im Client-Bereich bewegt werden kann?
    Das wurde heir shcon 1000x beantwortet. Bitte also erst die Suchfunktion benutzen.

    case WM_LBUTTONDOWN:
    	ReleaseCapture();
    	return SendMessage(hwnd, WM_SYSCOMMAND, SC_MOVE+HTCAPTION, 0);
    

Anmelden zum Antworten