Eigene Nachrichten mit SendMessage (VC++ 6)

Baron Sengir

Mitglied
Hallo Ihr Lieben,

ich bin es mal wieder. Ich habe folgendes vor: In einer Dialogfeld-Anwendung habe ich eine Registerkarte erzeugt. Damit auf ihr auch irgendwelche Steuerelemente erscheinen, muss man ja einen weiteren Dialog erzeugen und ihn dann als Child integrieren. Klappt auch alles wunderbar.

Nun sammele ich von User diversere Daten. Auf einem Klick wollte ich aus diesen Daten nun bestimmte auswählen und an anderer Stelle weiterverarbeiten. Da dachte ich mir doch, ich erzeuge einen Pointer, der auf die Daten verweist und den übergebe ich an das Fenster, das die Daten weiterverarbeitet.

Nur, wie stelle ich die Kommunikation zwischen den Fenstern her? Ich dachte mir, vielleicht geht das mit SendMessage. Nur leider habe ich überhaupt keine Ahnung wie ich das bewerkstelligen soll. Ich müßte doch eine eigene Message kreieren und diese dann senden. Diese Nachricht muss dann das richtige Fenster abfangen und weiterverabeiten. Leider habe ich dazu im Internet nichts gefunden, was mir weitergeholfen hat.

Auf jeden Fall habe ich schon einmal versucht, eine Standardnachricht (maximize) an das entsprechende Fenster zu senden. Das hat schon mal funktioniert. Also kriege ich zumindest die Grundkommunikation hin.

Könnt Ihr mir weiterhelfen? Ich bin aber immer noch Einsteiger was VC++ 6 angeht. Es wäre sehr nett, wenn Ihr daher etwas ausführlicher erläutern würdet.

Es muss übrigens nicht zwangsweise über Sendmessage gelöst werden. Ich bin auch für jede andere Idee offen.

Vielen Dank schon einmal vorweg für's Durchlesen und Nachdenken, was ich von Euch will.

Liebe Grüße

Markus
 
Hier mal kurz der Weg, um benutzerdefinierte Messages zu implementieren.

1. Message definieren:
Code:
#define WM_MYMESSAGE       WM_USER+1    // irgendeine Nummer zu WM_USER addieren

2. Im Header der Empfängerfensterklasse einen Messagehandler deklarieren:
Code:
class xyz
{
       :
    afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
    DECLARE_MESSAGE_MAP()
       :
};

3. Im .cpp-File der Empfängerfensterklasse ergänzen:
Code:
BEGIN_MESSAGE_MAP( ... )
       :
    ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)
END_MESSAGE_MAP()

  :
  :

LRESULT xyz::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
       :
    return 0;
}

Der Sendmessage-Befehl wird dann wie bei sonstigen Messages auch verwendet.

/Edit: Fehler in der Source korrigiert.
 
Zuletzt bearbeitet:
Zurück