Anfänger verzweiflung mit OnPait()



  • Nach 2 Stunden durchlesen von allen möglichen Lösungen aus diese Forum (ich weiss nicht weiter) ... muss ich doch die Frage stellen!

    - Habe Dialogbasierte Anwendung
    - Von einen Dialog wird andere Aufgerufen

    if (m_dEditor.DoModal() == IDOK)
    {
      CHotelDlg::OnPaint();
      Prozedur();  // dauert ca. 20 sekunden
    }
    

    Problem ist, daß mein Programm lässt sich mit alle ruhe erst die Prozedur() ausführen bevor HotelDlg wieder gezeigt wird... 😕

    Mein OnPaint() sieht so aus:

    void CHotelDlg::OnPaint(void)
    {
    	if (IsIconic())
    	{
    		CPaintDC dc(this); // Gerätekontext zum Zeichnen
    
    		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
    
    		// Symbol in Clientrechteck zentrieren
    		int cxIcon = GetSystemMetrics(SM_CXICON);
    		int cyIcon = GetSystemMetrics(SM_CYICON);
    		CRect rect;
    		GetClientRect(&rect);
    		int x = (rect.Width() - cxIcon + 1) / 2;
    		int y = (rect.Height() - cyIcon + 1) / 2;
    
    		// Symbol zeichnen
    		dc.DrawIcon(x, y, m_hIcon);
    	}
    	else
    	{
    		CDialog::OnPaint();
    	}
    }
    

    Gibt`da einfache trick was ein Anfäger wiessen muss oder muss ich wieder stunden lang Bücher durch walzen...

    Danke für dier Hilfe
    Adam



  • hmm statt aufrufen der funktion, mach doch mal ein invalidate() oder invalidateRect()!


  • Mod

    Handler Funktionen die mit On anfangen werden nicht von einem selber aufgerufen, sondern das Windows System ruft diese bei Bedarf auf.

    Mach Dich bitte mit der Technik vertraut, indem Du einige Tutorials oder Bücher liest.


Anmelden zum Antworten