Erstellung eines Gui Threads klappt nicht so richtig :)



  • Hi,

    erstmal entschuldige ich mich für den komischen Threadtitel aber mir fällt echt nichts ein was mein Problem beschreiben könnte...

    Ich habe in meinem Programm eine längere Berechnung und möchte den Fortschritt in einem Extra Fenster mit eigenem GUI Thread anzeigen lassen. Jetzt habe ich wie auf http://www.codersource.net/mfc_user_interface_thread.html beschreiben den GUI Thread erstellt. Der Start des Threads sieht so aus:

    void CGUIThreadTestDlg::OnOK() 
    {
         m_AusgabeThread  = new AusgabeFenster;
         m_AusgabeThread->CreateThread());
         m_AusgabeThread->PostThreadMessage(WM_MYTHREADMESSAGE,NULL,NULL); //WM_MYTHREADMESSAGE ruft die Fkt AusgabeFenster::MyMessageHandler auf
    
    //testberechnung die eigentlich im Fenster angezeigt werden soll...
    	for(int i = 0; i < 20; i++)
    	{
    		CString Text;
    		Text.Format("%d",i);
    		if(m_AusgabeThread->m_Dlg)
    			m_AusgabeThread->m_Dlg->SetzeText(Text);
    
    		m_cbla.SetWindowText(Text);
    
    		Sleep(1000);	
    	}	
    }
    

    Im Thread Selber wird in der Funtkion MyMessageHandler der Dialog geöffnet. Ich hatte diesen Code auch schon in der InitInstance stehen (so wie es bei der ...App Klasse der Fall ist), aber das brachte mir auch nicht den erwünschten Effekt.

    void AusgabeFenster::MyMessageHandler(WPARAM, LPARAM)
    {
      	m_Dlg = new Dialog;
    	//m_Dlg->Create(IDD_DIALOG1);
    	m_Dlg->DoModal();
    }
    

    Allerdings erscheint der Dialog, der ja eigentlich das i aus der Schleife ausgeben soll, erst wenn diese zu ende ist. was mache ich falsch? Es bringt ja nichts ein Ausgabefenster zu erstellen wenn es erst nach der Berechnung angezeigt wird 😞


Anmelden zum Antworten