Hintergurnd eines Fensters setzen



  • Hi,

    ich möchte das mein Fenster mit einer Frabegefüllt wird. Da hab ich mir gedacht ich könnt einfach mit "SetBkColor" die Hintergrundfarbe ändern und neu Zeichnen und schon hat es die Farbe. Aber iwie klappt das nicht.
    Hier mal ein auszug auf meinem Code:

    ......
    	WNDCLASS wnd;
    
    	wnd.style = CS_VREDRAW | CS_HREDRAW;
    	wnd.cbClsExtra = 0;
    	wnd.cbWndExtra = 4;
    	wnd.hInstance = hInstance;
    	wnd.hIcon = NULL;
    	wnd.hCursor = LoadCursor(NULL, IDC_ARROW);
    	wnd.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
    	wnd.lpszMenuName = NULL;
    	wnd.lpszClassName = CLASS_NAME;
    	wnd.lpfnWndProc = PixelWndProc;
    .....
    
    		case WM_LBUTTONDOWN:
    		{
    			int iCur = GetWindowLong(hWnd,0);
    
    			if(iCur == 0)
    			{
    
    				hdc = GetDC(hWnd);
    				SetBkColor(hdc, RGB(0,0,0));
    				ReleaseDC(hWnd, hdc);
    
    				SetWindowLong(hWnd,0, !iCur);
    				InvalidateRect(hWnd, NULL, TRUE);
    			}
    
    			return 0;
    

    Sollte ja jetzt imho schwarz werden oder !?

    Danke schon mal für die Hilfe

    Gruß Pingu


  • Mod

    Ein DC ist ein temporäres Objekt und hält keinen Status!

    Wenn Du also den Hintergrund änern willst musst Du den entsprechenden Messagehandler einbauen: WM_ERASEBKGND. Ei Neuzeichnen muss dann erzwungen werden mit InvalidateRect...

    Lies mal ein Tutorial, damit Du verstehst, wie bei Windows die Informatzionen dargestellt und gezeichnet werden (siehe WM_PAINT).


Anmelden zum Antworten