Hallo Felix,
da Windows intern auf der WinAPI beruht (und diese in C bzw. C++ implementiert ist), kann ich es dir am besten anhand eines einfachen WinAPI-Tutorials zeigen:
www.functionx.com/win32/Lesson01c.htm
Die wichtigen Code-Zeilen daraus sind:
Quelltext
1: 2: 3: 4: 5:
| while( GetMessage(&Msg, NULL, 0, 0) ) { TranslateMessage(&Msg); DispatchMessage(&Msg); } |
Die ist die sog. "Message Loop", welche auf Windows Botschaften lauscht und diese dann entsprechend verarbeitet.
Die einzelnen Botschaften (z.B. WM_CLICK, WM_CLOSE, WM_PAINT, etc.) werden dann in der "WndProc" verarbeitet (welche vorher registriert werden muß).
Eine Liste der festdefinierten Windows Messages (WM) findest du z.B. unter
wiki.winehq.org/List_Of_Windows_Messages
Die Bedeutung der einzelnen Messages sind dann wiederum in der
Windows Development Reference bei den einzelnen Bereichen erklärt, z.B. die eigentlichen Windows-Messages unter
Window Reference ("Window Notifications"). Desweiteren gibt es dann je nach Control noch eigene Messages (z.B. BT_XXX, für Buttons, CB_XXX für ComboBoxen etc.).
Unter C# (bzw. .NET) ist die WinForms Message-Loop in der Application.Run()-Methode implementiert und jedes Control bzw. Form hat eine virtuelle
WndProc Methode, so daß man diese dann für eigene Messages erweitern (bzw. vorhandene Messages abfangen und anders behandeln) kann.
Daher darf man auch niemals im GUI-Thread längere Operationen ausführen, da man damit die GUI (und somit die "Message Loop") blockiert (wie z.B. unter
[FAQ] Warum blockiert mein GUI? erklärt).
Ich hoffe, ich konnte dir damit einen Überblick verschaffen. Du darfst aber gerne noch weitere Detail-Fragen stellen