Koordinaten Kind-Fenster relativ zum Eltern-Fenster ermitteln



  • Hallo,

    Vohanden: WindowsForm mit einem Static-Steuerelment.
    Gesetzte Koordinaten beim Start: Left = 30, Top = 10, Right = 30, Bottom = 20.

    Ich möchte nun das Kind-Fenster (Static) mit MoveWindow() in seiner Größe ändern.
    Mit GetClientRect() wird meine Struktur bei Left und Top nur mit "0" gefüllt.
    Right und Bottom stimmt.

    Mit welcher Funktion bekommt ich alle vier Werte (30,10,30,20) in die Struktur?

    Ich möchte dann auf Right einen festen Wert dazu addieren und mit MoveWindow()
    das Steuerelement neu anzeigen.

    Gruß, Nicky



  • Es würde sich GetWindowRect + ScreenToClient anbieten. Bzw. selbst eine ScreenToClient-Funktion zu überladen:

    void ScreenToClient(HWND hwnd, RECT* inOut)
    {
    	POINT p = {inOut->left, inOut->top};
    	int w = inOut->right-inOut->left;
    	int h = inOut->bottom-inOut->top;
    	ScreenToClient(hwnd, &p);
    	SetRect(inOut,p.x,p.y,p.x+w,p.y+h);
    }
    

    supernicky schrieb:

    Ich möchte nun das Kind-Fenster (Static) mit MoveWindow() in seiner Größe ändern.Gruß, Nicky

    Aber andererseits ist MoveWindow, wie der Name schon sagt, nicht die richtige Funktion, wenn du Controls nur in der Größe ändern möchtest.

    HWND childwindow = /**/;
    SetWindowPos(childwindow, 0, 0, 0, width, height, SWP_NOZORDER | SWP_NOMOVE);
    

Anmelden zum Antworten