Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: PostMessage vs. SendMessage

  Alt 21. Okt 2008, 13:27
Zitat:
Ist es theoretisch möglich, das SendMessage von PostMessage überholt wird? Also dass die Message von Post eher ankommt als von Send?
Nein und darf es auch nicht.

Alle Nachrichten die mit PostMessage() versendet wurden werden in der Anwendungs-Message-Bearbeitung-Schleife abgearbeitet. Das wäre dann Application.Run und innerhalb dieser wird mit einer Endlosschleife per GetMessage(), TranslateMessage() und DispatchMessage() dieser Messagequeue ausgelesen und verarbeitet. Üblicherweise ruft man dazu Application.ProcessMessages; auf.
SendMessage() dagegen sendet die Nachricht direkt an die Fenster.

Nur wenn der Entwickler konzeptionell nicht das Windowsmessagesytem verstanden hat wird er unter Umständen in einer Message Methode die per SendMessage() aufgerufen wird, einen "asynchronen" und im Grunde "illegalen" Aufruf von Application.ProcessMessages;, der den Queue leert, kann der Eindruck entstehen das Nachrichten die mit PostMessage() versendet wurden früher als die mit SendMessage() gesendeten, eintreffen.

Also

1.) PostMessage(Window, cm_Test);
2.) SendMessage(Window, wm_user);
2.1.) im Fenster wm_User empfangen in Messagemethode
2.2.) darin wird Application.ProcessMessages aufgerufen und somit Message cm_Test abgearbeitet
3.) Program läuft weiter

Gruß Hagen
  Mit Zitat antworten Zitat