fenster putzen???



  • gibts eine funktion die die ganzen sachen putzt die man mit setpixel oder textout gemacht hat



  • InvalidateRect - falls du die genannten Funktionsaufrufe außerhalb vom WM_PAINT tätigst 😕
    Denn so wie sich das anhört hast du einen Design-Fehler im Programm und zeichnest außerhalb vom WM_PAINT direkt auf den Bildschirm - ist das möglich? 🤡



  • also ich mach alles im wm_paint also malen und so aber mein programm braucht immer mehr speicher



  • Dann scheinst du irgendwelchen Speicher / Objekte nicht mehr freizugeben. Das hat dann aber doch nicht mit "fenster putzen" zu tun 😕

    Wenn du meinst, dass es an WM_PAINT liegt, dann zeig doch davon mal den Code 😉



  • case WM_PAINT:
            {
                char buf[500];
               hdc = BeginPaint(hwnd, &ps);
    
                if (gpPicture)
                {
    
    				// get width and height of picture
    				long hmWidth;
    				long hmHeight;
    				gpPicture->get_Width(&hmWidth);
    				gpPicture->get_Height(&hmHeight);
    
    				// convert himetric to pixels
    				int nWidth	= MulDiv(hmWidth, GetDeviceCaps(hdc, LOGPIXELSX), HIMETRIC_INCH);
    				int nHeight	= MulDiv(hmHeight, GetDeviceCaps(hdc, LOGPIXELSY), HIMETRIC_INCH+1000);
    	            MoveWindow(hwnd,0,0,nWidth, nHeight, TRUE);   			
                    RECT rc;
    				GetClientRect(hwnd, &rc);
    				// display picture using IPicture::Render
    				gpPicture->Render(hdc, 0, 0, nWidth, nHeight, 0, hmHeight, hmWidth, -hmHeight, &rc);
    			}
               TextOut(hdc,0,30,"From:",5);
               TextOut(hdc,0,60,"To:",3);
               TextOut(hdc,0,90,"Message:",8);
    
               EndPaint(hwnd, &ps);
               break;
    }
    

    da is des wm_paint



  • Warum rufst du bei WM_PAINT MoveWindow auf?



  • Und nWidth, nHeight würde ich auch nur einmal am Anfang des Programmes initialisieren. Das Bild ändert sich ja wohl nicht, oder?


Anmelden zum Antworten