(keine Rückmeldung) bei rekursivem Funktionsaufruf



  • Hallo an Alle,

    ich bin Anfänger wenn es um die Programmierung in VC++ 2008 Express geht.
    Habe ein kleines Programm in dem beim Klicken auf einen Button eine rekursive Funktion aufgerufen werden soll. Funktion fängt sich selbst ab und "funktioniert" einwandfrei. Problem: Wenn die Funktion läuft kann ich das Programm nicht mehr Bedienen, sprich ich kann z.B. keine Anderen Buttons drücken. Wenn ich dies trotzdem tue, erscheint hinter dem Programmname die Meldung: "keine Rückmeldung".
    Kann das daran liegen das ich die Funktion aus einem Eventhandler aufgerufen habe?
    Würde vielleicht eine Multithreadprogrammierung helfen?

    Vielen Dank schon mal für eure Hilfe.

    Mit freundlichen Grüßen

    R.V.



  • Also am besten/saubersten geht das über Multithreading. Hierbei könntest du deine rekursive Funktion in einem zweiten Thread laufen lassen, und das Fertigstellen der Berechnung deinem Hauptthread über eine Windows-Nachricht mitteilen. Und solang du während dein Thread läuft nicht auf gemeinsamen Speicher zugreifen musst (was in deinem Fall nicht der Fall sein sollte, da der Benutzer ja eh auf das Ergebnis warten muss) brauchst du dich nicht mal besonders um die Synchronisation kümmern.

    btw, wenn wir über die Express Version reden, dann reden wir doch eigentlich nicht über MFC oder?



  • Vielen Dank,

    vielleicht hast du Recht. Ich habe mich heute erst hier angemeldet und wusste nicht genau wo ich mein Thema posten sollte. Wo würdest du dieses Thema posten?

    MFG

    V.R.



  • Eigentlich bei WinAPI, da du dein Programm ja damit schreibst oder nicht?



  • Ich habe das Programm mit den Standard-Headern geschrieben.
    Kann sein das diese die API verwenden...



  • Welche Standard-Header?

    Nach dem was du schreibst vermute ich dass du C++/CLI und Windows Forms verwendest.
    Falls das stimmt lies dir mal den ersten Beitrag in folgendem Thread durch:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-263084.html



  • Aha, ich habe mirden Beitrag durchgelesen...
    Zu erst einmal ich habe das Programm mit DEV-C++ von bloodshed geschrieben, ein einfaches Freeware Programm. Ich verstehe unter Standard-Header solche wie stdio.h , conio.h , windows.h, usw. ... Ich hatte die Abteilung MFC gewählt da ich dieses Programm dann in VC++ nochmals geschrieben hatte...

    Der Beitrag war ja sehr interessant. Ich will eigentlich in die Richtung der 3D Programierung gehen. Sollte ich dann besser mit C# anfangen als mit VC++ ???



  • Das kann man so allgemein nicht sagen denke ich.
    Ich persönlich finde C# angenehmer für GUI Dinge.

    Was verwendest du denn für deine Fenster? Auch rein die WinAPI (="windows.h")? Also RegisterClass mit eigener WindowProc und alldem? Halte ich für ziemlich umständlich, aber geht natürlich auch.

    Was Threading angeht kann ich die Boost.Thread empfehlen. Ist einigermassen angenehm zu verwenden, halbwegs gut dokumentiert und sehr verlässlich (=wenig Bugs).



  • um ehrlich zu sein ich weiß nicht ob ich die WinAPI verwende...
    Ich habe ein Buch für den Einstieg in VC++ dort wurde mir gezeigt wie ich die .NET Klassen verwenden kann. Meine Fenstersind soweit ich weiß Windows Forms.



  • Dann verwendest du C++/CLI. Die Sprache an sich ist schonmal ein Unterschied zum standard C++, und als Framework verwendest du dann .NET, das ist ganz was anderes wie MFC oder WinAPI.



  • Alles klar Danke!



  • Kann mir einer den Quellcode von einer möglichen Multithread Programmierung schicken. Damit meine ich das ich eine Funktion parallel zum Obeflächenbedienung laufen lassen will.

    MFG

    V.R.


Anmelden zum Antworten