Entwickler-Ecke

Windows API - Verständnisfrage zu GetMessage


Flamefire - Fr 01.08.08 10:16
Titel: Verständnisfrage zu GetMessage
Kann mir bitte mal jemand genau erklären wie das funktioniert?
Ich dachte bisher (von der Logik her):
Aufruf GetMessage liefert Message, die dan ausgewertet werden kann.

Aber dann gibts ja noch TranslateMessage und DispatchMessage
Was machen die genau? Und wenn möglich mit genauerer Erklräung als MSDN 'Verteilt eine Nachricht'

Danke
Flamefire


Delete - Fr 01.08.08 16:19

GetMessage ruft die Nachrichten aus der Nachrichtenschlange ab Mit Hilfe von TranslateMessage und DispatchMessage werden die Nachrichten an die Fensterprozedur des Fensters weitergegeben. Wobei TranslateMessage nur benötigt wird, wenn das Fenster Tastatureingaben entgegennimmt, diese werden dann von TranslateMessage entsprechend übersetzt.

Eine Nachrichtenschleife für ein Fenster sähe dann zum Beispiel so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
   while true do
   begin
     if not GetMessage(msg, 000then
       break;
     TranslateMessage(msg);
     DispatchMessage(msg);
   end;


Und eine zugehörige Fensterprozedur sähe so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
   function WndProc(hWnd: HWND; uMsg: UINT; wParam: wParam; lParam: LParam): lresult; stdcall;
   begin
     Result := 0;
     case uMsg of
       WM_CREATE:
       begin
       end
     else
       Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
     end;
   end;


Das ganze kannst du hier http://www.michael-puff.de/Artikel/ICQLogWin32API.shtml noch mal genauer nachlesen.