![]() |
PostMessage vs. SendMessage
Hiho zusammen,
ich hab mal ne Frage bezüglich der oben genannten Funktionen: Ist es theoretisch möglich, das SendMessage von PostMessage überholt wird? Also dass die Message von Post eher ankommt als von Send? Thx schonma |
Re: PostMessage vs. SendMessage
Nachrichten, die mit SendMessage gesendet werden, rufen direkt die Fensterprozedur des zugehörigen Fenster auf. Nachrichten, die mit PostMessage gesendet werden, werden ich die Nachrichtenschlange des Fenster angereiht.
|
Re: PostMessage vs. SendMessage
Ja, ich weis. Deswegen stell ich ja die Frage, ob es unter bestimmten Umständen möglich wäre. Weil so von der Logik her, müsste Send ja eher ankommen, da dort ja nicht gewartet wird. Könnte es da irgendwelche besondere Umstände geben, die diese Logik außer Kraft setzen?
|
Re: PostMessage vs. SendMessage
Mir sind keine bekannt.
|
Re: PostMessage vs. SendMessage
Hm okay, dann danke ich dir.
|
Re: PostMessage vs. SendMessage
Zitat:
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 |
Re: PostMessage vs. SendMessage
Sehr schön, danke für die ausführliche Antwort :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz