Nachrichten umleiten?



  • Hallo zusammen,

    ich schreibe gerade ein Programm, dass ich in zwei Klassen eingeteilt habe. Eine Klasse (Dialogfeld) bildet das Frontend zur Ein- und Ausgabe und eine Klasse bildet die eigentliche Funktion (Berechnungen, I/O).

    In letzterer, der "Funktions"klasse, setze ich die Klasse CSerialPort ein, um auf die serielle Schnittstelle zugreifen zu können. Leider funktioniert die Klasse bei mir offensichtlich nicht. Das Senden funktioniert zwar einwandfrei, aber ich kann keine Daten empfangen.

    Die Klasse versendet beim Empfang von Daten eine Nachricht. Ich vermute, dass ich diese Nachricht nicht in meiner "Funktions"klasse empfangen kann und dass sie an die "Ein-/Ausgabe"klasse geleitet wird.

    Meine Fragen lauten nun:
    Werden Nachrichten global, also für alle Klassen sichtbar, versendet? Oder sind sie nur für eine bestimmte Klasse sichtbar? Falls letzteres, für welche und gibt es trotzdem eine Möglichkeit, die Daten umzuleiten?

    Grüße
    Steffen

    P.s.: Infos zu CSerialPort gibt es hier: http://www.codeguru.com/Cpp/I-N/network/serialcommunications/article.php/c2483


  • Mod

    Nachrichten können nur Fenster empfangen!

    Stell Deine Kommunikation mit dem seriellen Port auf eine Klasse um, die keine Fensternachrichten benötigt.

    http://www.naughter.com/serialport.html

    Evtl. solltest Du den I/O Teil in einen eignen Thread auslagern.



  • Wuzz, ich dachte jeder Thread, ob Fenster oder nicht, kann seine eigene Nachrichtenschlange haben? O.O


  • Mod

    Decimad schrieb:

    Wuzz, ich dachte jeder Thread, ob Fenster oder nicht, kann seine eigene Nachrichtenschlange haben? O.O

    Kann man... und? Wie addressierst Du nun eine Nachricht an eine Klasse?
    Via PostThreadMessage und dann irgendwelchen Klimmzügen die eine Klasseninstanz adressieren und identifizieren?

    Zudem: Warum sollte man eine Message-Loop in einem Thread wollen, der keine braucht 😉



  • Na, deine Aussage stand da schon ziemlich Allgemeingültig, finde ich!



  • Martin Richter schrieb:

    Nachrichten können nur Fenster empfangen!

    Ich habs zwar schon mehrmals nicht hinbekommen aber sollte nicht auch ein CCmdTarget reichen? Mir fällt zwar leider nicht mehr ein woran es damals gescheitert ist, aber das wollte ich schon lange mal fragen 😉


Anmelden zum Antworten