Freigeben über


Nachrichten und Nachrichtenwarteschlangen

In diesem Abschnitt werden Nachrichten und Nachrichtenwarteschlangen und deren Verwendung in Ihren Anwendungen beschrieben.

In diesem Abschnitt

Name BESCHREIBUNG
Informationen zu Meldungen und Meldungswarteschlangen In diesem Abschnitt werden Windows-Nachrichten und -Nachrichtenwarteschlangen erläutert.
Verwenden von Nachrichten und Nachrichtenwarteschlangen Die folgenden Codebeispiele veranschaulichen, wie die folgenden Aufgaben ausgeführt werden, die Windows-Nachrichten und -Nachrichtenwarteschlangen zugeordnet sind.
Nachrichtenreferenz Enthält den API-Verweis.

System-Provided Nachrichten

Listen der vom System bereitgestellten Nachrichten finden Sie unter Systemdefinierte Nachrichten.

Nachrichtenfunktionen

Name BESCHREIBUNG
BroadcastSystemMessage Sendet eine Nachricht an die angegebenen Empfänger. Die Empfänger können Anwendungen, installierbare Treiber, Netzwerktreiber, Gerätetreiber auf Systemebene oder eine beliebige Kombination dieser Systemkomponenten sein.
Um zusätzliche Informationen zu erhalten, wenn die Anforderung definiert ist, verwenden Sie die BroadcastSystemMessageEx-Funktion .
BroadcastSystemMessageEx Sendet eine Nachricht an die angegebenen Empfänger. Die Empfänger können Anwendungen, installierbare Treiber, Netzwerktreiber, Gerätetreiber auf Systemebene oder eine beliebige Kombination dieser Systemkomponenten sein.
Diese Funktion ähnelt BroadcastSystemMessage , mit der Ausnahme, dass diese Funktion weitere Informationen von den Empfängern zurückgeben kann.
DispatchMessage Sendet eine Nachricht an eine Fensterprozedur. Es wird in der Regel verwendet, um eine Nachricht zu senden, die von der GetMessage-Funktion abgerufen wird.
GetInputState Bestimmt, ob in der Nachrichtenwarteschlange des aufrufenden Threads Maus- oder Tastaturnachrichten vorhanden sind.
GetMessage Ruft eine Nachricht aus der Nachrichtenwarteschlange des aufrufenden Threads ab. Die Funktion sendet eingehende gesendete Nachrichten, bis eine gesendete Nachricht für den Abruf verfügbar ist.
Im Gegensatz zu GetMessage wartet die PeekMessage-Funktion nicht, bis eine Nachricht gesendet wird, bevor sie zurückgegeben wird.
GetMessageExtraInfo Ruft die zusätzlichen Nachrichteninformationen für den aktuellen Thread ab. Zusätzliche Nachrichteninformationen sind ein anwendungs- oder treiberdefinierter Wert, der der Nachrichtenwarteschlange des aktuellen Threads zugeordnet ist.
GetMessagePos Ruft die Cursorposition für die letzte Nachricht ab, die von der GetMessage-Funktion abgerufen wurde.
Um die aktuelle Position des Cursors zu bestimmen, verwenden Sie die GetCursorPos-Funktion .
GetMessageTime Ruft die Nachrichtenzeit für die letzte Nachricht ab, die von der GetMessage-Funktion abgerufen wurde. Die Zeit ist eine lange ganze Zahl, die die verstrichene Zeit in Millisekunden vom Start des Systems bis zum Zeitpunkt der Erstellung der Nachricht (d. h. in der Nachrichtenwarteschlange des Threads) angibt.
GetQueueStatus Gibt den Typ der Nachrichten an, die in der Nachrichtenwarteschlange des aufrufenden Threads gefunden wurden.
InSendMessage Bestimmt, ob die aktuelle Fensterprozedur eine Nachricht verarbeitet, die von einem anderen Thread (im selben Prozess oder einem anderen Prozess) durch einen Aufruf der SendMessage-Funktion gesendet wurde.
Verwenden Sie die Funktion InSendMessageEx , um zusätzliche Informationen darüber zu erhalten, wie die Nachricht gesendet wurde.
InSendMessageEx Bestimmt, ob die aktuelle Fensterprozedur eine Nachricht verarbeitet, die von einem anderen Thread (im selben Prozess oder in einem anderen Prozess) gesendet wurde.
PeekMessage Sendet eingehende gesendete Nachrichten, überprüft die Threadnachrichtenwarteschlange auf eine gesendete Nachricht und ruft die Nachricht ab (falls vorhanden).
PostMessage Sendet eine Nachricht in der Nachrichtenwarteschlange, die dem Thread zugeordnet ist, der das angegebene Fenster erstellt hat, und gibt zurück, ohne darauf zu warten, dass der Thread die Nachricht verarbeitet.
Um eine Nachricht in der Nachrichtenwarteschlange zu posten, die einem Thread zugeordnet ist, verwenden Sie die PostThreadMessage-Funktion .
PostQuitMessage Gibt dem System an, dass ein Thread eine Anforderung zum Beenden (Beenden) gestellt hat. Sie wird in der Regel als Reaktion auf eine WM_DESTROY-Nachricht verwendet.
PostThreadMessage Sendet eine Nachricht an die Nachrichtenwarteschlange des angegebenen Threads. Es wird zurückgegeben, ohne darauf zu warten, dass der Thread die Nachricht verarbeitet.
RegisterWindowMessage Definiert eine neue Fenstermeldung, die garantiert im gesamten System eindeutig ist. Der Nachrichtenwert kann beim Senden oder Posten von Nachrichten verwendet werden.
ReplyMessage Antwortet auf eine Nachricht, die über die SendMessage-Funktion gesendet wird, ohne die Steuerung an die Funktion zurückzugeben, die SendMessage aufgerufen hat.
SendAsyncProc Eine anwendungsdefinierte Rückruffunktion, die mit der SendMessageCallback-Funktion verwendet wird. Das System übergibt die Nachricht an die Rückruffunktion, nachdem die Nachricht an die Zielfensterprozedur übergeben wurde. Der SENDASYNCPROC-Typ definiert einen Zeiger auf diese Rückruffunktion. SendAsyncProc ist ein Platzhalter für den anwendungsdefinierte Funktionsnamen.
SendMessage Sendet die angegebene Nachricht an ein Fenster oder Fenster. Die SendMessage-Funktion ruft die Fensterprozedur für das angegebene Fenster auf und wird erst zurückgegeben, wenn die Fensterprozedur die Nachricht verarbeitet hat.
Um eine Nachricht zu senden und sofort zurückzugeben, verwenden Sie die Funktion SendMessageCallback oder SendNotifyMessage . Um eine Nachricht in der Nachrichtenwarteschlange eines Threads zu posten und sofort zurückzugeben, verwenden Sie die Funktion PostMessage oder PostThreadMessage .
SendMessageCallback Sendet die angegebene Nachricht an ein Fenster oder Fenster. Es ruft die Fensterprozedur für das angegebene Fenster auf und gibt sofort zurück. Nachdem die Fensterprozedur die Nachricht verarbeitet hat, ruft das System die angegebene Rückruffunktion auf und übergibt das Ergebnis der Nachrichtenverarbeitung und einen von der Anwendung definierten Wert an die Rückruffunktion.
SendMessageTimeout Sendet die angegebene Nachricht an eines von mehreren Fenstern.
SendNotifyMessage Sendet die angegebene Nachricht an ein Fenster oder Fenster. Wenn das Fenster vom aufrufenden Thread erstellt wurde, ruft SendNotifyMessage die Fensterprozedur für das Fenster auf und wird erst zurückgegeben, wenn die Fensterprozedur die Nachricht verarbeitet hat. Wenn das Fenster von einem anderen Thread erstellt wurde, übergibt SendNotifyMessage die Nachricht an die Fensterprozedur und gibt sofort zurück. Es wartet nicht, bis die Fensterprozedur die Verarbeitung der Nachricht abgeschlossen hat.
SetMessageExtraInfo Legt die zusätzlichen Nachrichteninformationen für den aktuellen Thread fest. Zusätzliche Nachrichteninformationen sind ein anwendungs- oder treiberdefinierter Wert, der der Nachrichtenwarteschlange des aktuellen Threads zugeordnet ist. Eine Anwendung kann die GetMessageExtraInfo-Funktion verwenden, um die zusätzlichen Nachrichteninformationen eines Threads abzurufen.
TranslateMessage Übersetzt Nachrichten mit virtuellen Schlüsseln in Zeichennachrichten. Die Zeichennachrichten werden an die Nachrichtenwarteschlange des aufrufenden Threads gesendet, um beim nächsten Aufruf der GetMessage - oder PeekMessage-Funktion vom Thread gelesen zu werden.
WaitMessage Gibt die Steuerung für andere Threads ab, wenn ein Thread keine anderen Nachrichten in seiner Nachrichtenwarteschlange enthält. Die WaitMessage-Funktion hält den Thread an und gibt erst zurück, wenn eine neue Nachricht in der Nachrichtenwarteschlange des Threads platziert wird.

Nachrichtenkonstanten

Name BESCHREIBUNG
OCM__BASE Wird verwendet, um private Nachrichten für die Verwendung durch private Fensterklassen zu definieren.
WM_APP Wird verwendet, um private Nachrichten zu definieren.
WM_USER Wird verwendet, um private Nachrichten für die Verwendung durch private Fensterklassen zu definieren.

Nachrichtenstrukturen

Name BESCHREIBUNG
BSMINFO Enthält Informationen zu einem Fenster, das eine Anforderung von BroadcastSystemMessageEx abgelehnt hat.
MSG Enthält Meldungsinformationen aus der Meldungswarteschlange eines Threads.