Dialog OnPaint()



  • tach,

    ich habe einen dialog, in dem ein bild gezeichnet wird, das sich an die grüße anpasst.
    wenn ich die größe des dialoges verändere, dann wird OnPaint() nicht aufgerufen, um das bild neu zu zeichnen.
    ich habe auch schon versucht di OnSize() zu nutzen, um daraus die OnPaint() manuell aufzurufen, doch das macht der auch nicht, der lump.
    wie bringe ich den dialog dazu, dass die OnPain() aufgerufen wird ?

    kann mir jemand helfen ?



  • Hi,

    wie hast du die WM_PAINT Message in OnSize verschickt?

    Grüße Rapha
    ps. Die WM_PAINT Message müsste eigentlich (logischerweise) schon aufgerufen werden, wenn die Größe des Dialogs verändert wird.



  • ja, das dachte ich auch 😞
    Ich habe auch die Eigenschaften von dem Formular auf:
    'Foramte->Rand->Grösse ändern' gestellt.

    // ---------------------

    void CTileSelect::OnPaint() 
    {
    	CRect rClientArea;
    	GetClientRect(&rClientArea);
    	CPaintDC dc(this); // device context for painting
    	CDC srcBMP;
    	srcBMP.CreateCompatibleDC(NULL);
    	srcBMP.SelectObject(this->m_tileBMP);
    	dc.StretchBlt(	0,						//	pos x
    					0,						//	pos y
    					rClientArea.right,		//	groesse x
    					rClientArea.bottom,		//	groesse y
    					&srcBMP,				//	quelle
    					0,						//	quellposition x
    					0,						//	quellposition y
    					this->m_uiBMP_WIDTH,
    					this->m_uiBMP_HEIGTH,
    					SRCCOPY );				//	flag
    
    	// Kein Aufruf von CDialog::OnPaint() für Zeichnungsnachrichten
    }
    
    void CTileSelect::OnSize(UINT nType, int cx, int cy) 
    {
    	OnPaint();
    	CDialog::OnSize(nType, cx, cy);
    }
    

    😕



  • och kommt schon Leute, weiss denn wirklich keiner woran das liegt ?



  • ok, ich habs ...
    ich mach in der onSize() ein
    Invalidate();


Anmelden zum Antworten