Rahmen um Fenster zeichnen



  • Hallo Leute,

    ich versuche mit DrawEdge einen Rahmen zu zeichnen aber es funktioniert einfahc nicht:

    case WM_PAINT:
    		HDC hdc;
    		RECT rc;
    		GetWindowRect(hwndDialog, &rc);
    		hdc = GetWindowDC(hwndDialog);
    		DrawEdge(hdc, &rc, EDGE_SUNKEN, BF_RECT);
    		ReleaseDC(hwndDialog, hdc);
    		return 0;
    

    Das Fenster wird dabei so wie immer angezeigt (ohne Rahmen).
    hdc und rc sind OK und DrawEdge gibt eine 1 zurück (also erfolgreich).
    Warum funktioniert es trotzdem nicht? 😞



  • In WM_PAINT sollte man immer "BeginPaint" und "EndPaint" verwenden um den DC zu erhalten!



  • Das hatte ich auch schon ausprobiert, hat aber leider auch nicht funktioniert:

    HDC hdc;
    		RECT rc;
    		PAINTSTRUCT ps;
    		GetWindowRect(hwndDialog, &rc);
    		hdc = BeginPaint(hwndDialog, &ps);
    		success = DrawEdge(hdc, &rc, EDGE_SUNKEN, BF_RECT);
    		EndPaint(hwndDialog, &ps);
    		return 0;
    

    Auch hier gibt es keinen Fehler aber trotzdem sieht man keinen Rahmen.



  • Ich hab das Problem gefunden. GetWindowRect war falsch, es muss GetClientRect genutzt werden.


Anmelden zum Antworten