Dialog mit Progressbar anzeigen während im Hauptfenster die Abarbeitung läuft



  • Hallo Leute,

    wie schon im Titel beschrieben möchte ich von meine Haupt Formular während der Abarbeitung einen Dialog mit einer Progressbar öffnen welche ich einer Schleife immer einen Step weiter geht.

    Also was hab ich getan Formular mit Progressbar angelegt mit einer public Funktion Step(), diese wird von einer Klasse aufgerufen in welche ein Thread läuft und dieser Thread wurde von meinem Hauptform aufgerufen. Leider blockiert der Dialog.

    Vielleicht habt ihr noch ein paar Ideen wie ich das ganz bewerkstelligen kann.

    Hier mal ein Paar Code Ausschnitte:

    Main

    m_Wait.Start();
    
        while(true)//Dient nur zur Simulation der Abarbeitungen
    	{
    		Sleep(1000);
    	}
    

    Zwischen Klasse

    void CWait::Start()
    {	
    	m_Dlg.Create(IDD_WAITDLG,NULL);
    	m_Dlg.ShowWindow(SW_SHOW);
    
    	m_bStopThread = FALSE;
    	AfxBeginThread(ShowBarThread,this);
    }
    
    void CWait::Step()
    {
    	while(!m_bStopThread )
    	{
    		Sleep(500);
    		m_Dlg.Step();
    	}
    }
    
    UINT CWait::ShowBarThread( LPVOID pParam)
    {
        ((CWait *)  pParam)->Step();
    	return 0;
    }
    

    Progressbar Dialog

    void CWaitDlg::Step()
    {
    	m_PregressBarCtrl.StepIt();
    }
    


  • es läuft alles wie du wills, nur siehst du leider nichts weil windows alles übeer Messages macht. Also musst du den Messageloop laufen lassen damit deine Nachrichten auch abgearbeitet werden. Schau mal hier sollte dir weiterhelfen, wenn du das geschickt mit deiner Sleep kombinierst


Anmelden zum Antworten