Validate und Invalidate (leicht)



  • Mein Programm funktioniert bis auf ein sehr Interessantes Detail.

    Viele haben sich sicher schon in manchen WIN32 gefragt:
    Kann man das häßliche mitverschieben des Fensterinhaltes beim Fensterziehen verhindern ?
    JA, ich verwende ein SetBackgroundBlack mit FLAG_avoidflicker.

    Doch damit funktioniert das Present() in OnRender manchmal nicht mehr.

    Es liegt garantiert an den Kontrollanweisungen Validate() und Invalidate().

    Aber wie funktionieren diese, wo sollten sie stehen, oder besser wie Löse ich das Problem ?

    //  ONTIMER
    void CoreApp::OnTimer()
    {	
    	//  Was genau fehlt ?
    }
    
    //  ONRESIZE
    void CoreApp::OnResize()
    {	
    	window_IsResized= TRUE;
    	if ( FLAG_avoidflicker )
    	{	
    		Rendertarget[0]->BeginDraw();
    		Rendertarget[0]->Clear(D2D1::ColorF(D2D1::ColorF::Black));
    		Rendertarget[0]->EndDraw(); 
    		SwapChain->Present(1, 0 );
    	}
    	DiscardDeviceResources();
    }
    
    //  MESSAGE THREAD
    		switch(message)
    		{	
    			case WM_SIZE:
    				{	
    					pCoreApp->OnResize();
    					//  Was genau fehlt ?
    				}
    
    			case WM_PAINT:
    				{
    					pCoreApp->OnRender();
    					//  Was genau fehlt ?
    				}
    
    			case WM_TIMER:
    				{
    					pCoreApp->OnTimer( pCoreApp );
    				}
    		}
    

    ( P.S.: Da die msdn-Doku in engl. ist und ich selbst Parameter für Parameter schon ausgewechselt habe. )



  • Viele haben sich sicher schon in manchen WIN32 gefragt:

    falsches forum... (und wenn wir schon bei falsch sind: der satz macht so auch nicht wirklich viel Sinn^^)

    warte einfach, bis dich jmd ins richtige verschiebt^^





  • unskilled schrieb:

    Viele haben sich sicher schon in manchen WIN32 gefragt:

    und wenn wir schon bei falsch sind: der satz macht so auch nicht wirklich viel Sinn^^

    Hast du noch nie in machen WIN32 gefragt?



  • Vielen Dank !


Anmelden zum Antworten