Nachrichtenaufbau

Zurück Zum Inhaltsverzeichnis Weiter

Wie Sie bereits erfahren haben spielen Nachrichten die zentrale Rolle in einem WINDOWS-Programm. Mit Hilfe von Nachrichten erfährt die Anwendung z.B. wenn der Anwender eine Taste drückt oder mit der Maus ins Anwendungsfenster klickt.

Doch aus was besteht eigentlich eine WINDOWS Nachricht? Sehen Sie sich dazu zunächst an, wie WINDOWS die Nachrichtenstruktur deklariert:

typedef struct tagMSG
{
    HWND   hwnd;
    UINT   message;
    WPARAM wParam;
    LPARAM lParam;
    DWORD  time;
    POINT  pt;
} MSG;

Das Strukturelement hwnd gibt den Empfänger der Nachricht an. Es besitzt den Datentyp HWND. Wie Sie vorhin bei den WINDOWS Datentypen erfahren haben, ist HWND der WINDOWS Datentyp für ein Fenster-Handle. Und damit haben wir bereits eine wichtige Erkenntnis gewonnen die Sie niemals vergessen sollten:

Nachrichten haben als Absender oder Empfänger im Normalfall immer ein Fenster!

Dies mag Sie vielleicht im ersten Augenblick etwas verwundern, gibt es unter WINDOWS doch auch solch nützliche Elemente wie Buttons oder aufklappbare Listboxen die ebenfalls Nachrichten versenden oder empfangen. Aber merken Sie sich nun den zweiten wichtigen Satz:

Alles was Sie auf dem Bildschirm sehen und nicht durch die Anwendung selbst dargestellt wird, ist im Regelfall ein Fenster!

Noch eine Anmerkung bevor wir zum zweiten Strukturelement der Nachrichtenstruktur übergehen: Im ersten Merksatz steht das Wort 'Normalfall'. Später im Kurs werden Sie auch eine Möglichkeit kennen lernen, Nachrichten an Anwendungen (Prozesse) zu senden.

Nun aber weiter mit dem Aufbau der Nachrichtenstruktur. Nach dem Nachrichten-Empfänger folgt die Kennung der Nachrichten. Die Nachrichten-Kennung message ist ein vorzeichenloser 32-Bit Wert (UINT). Da sich nun aber Zahlenwerte sehr schlecht merken lassen, sind für alle System-Nachrichten entsprechende IDs (symbolische Bezeichner) in der Datei WINUSER.H definiert. Eine ID setzt sich zusammen aus einem Präfix, der den Nachrichtentyp beschreibt, und dem eigentlichen Namen der Nachricht. Die nachfolgende Tabelle enthält eine Übersicht über einige Nachrichtentypen sowie eine Beispiel-Nachricht dazu:

Präfix

Nachrichtentyp

Beispiel

BM_ Button-Nachricht BM_SETSTYLE; setzt den Stil eines Buttons.
CB_ Combobox-Nachricht CB_ADDSTRING; fügt der Combobox einen Eintrag hinzu.
EM_ Editfeld-Nachricht EM_GETLINE; liest eine Zeile aus dem Editfeld aus.
WM_ Allg. WINDOWS-Nachricht WM_CLOSE; Anforderung das Fenster zu schließen.

Die beiden nächsten Elemente in der Nachrichtenstruktur wParam und lParam sind Zusatzinformationen zur Nachricht. Ihre Bedeutung hängt von der Nachricht ab. Mehr dazu aber im Verlaufe des Kurses.

Die restlichen Elemente der Struktur time und pt werden selten ausgewertet. Sie enthalten zum einen die Systemzeit (in Ticks) bei der die Nachricht aufgetreten ist und zum anderen die aktuelle Position der Maus beim Auftreten der Nachricht in Bildschirm-Koordinaten.

Nachrichten bei denen die Mausposition eine wichtige Rolle spielt, wie z.B. die Mausnachricht WM_MOUSEMOVE, erhalten die aktuelle Mausposition zusätzlich in den Zusatzinformationen wParam bzw. lParam übergeben.

Da wir nun den generellen Aufbau einer Nachricht, wenigsten vom Prinzip her, kennen, werden wir uns in der nächsten Lektion kurz mit den verschiedenen Nachrichtentypen beschäftigen.

Zurück Zum Inhaltsverzeichnis Weiter


Copyright © 2004

Senden Sie Emails mit Fragen oder Kommentaren zu dieser Website an: mailto:info@cpp-tutor.de
 Wolfgang Schröder, Lerchenweg 23, D-72805 Lichtenstein. Tel: +49 7129 6470