Teilen über


Nachrichten- und Nachrichtenwarteschlangen

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

In diesem Abschnitt

Name Beschreibung
zu Nachrichten- und Nachrichtenwarteschlangen In diesem Abschnitt werden Windows-Nachrichten und Nachrichtenwarteschlangen erläutert.
Verwenden von Nachrichten- und Nachrichtenwarteschlangen Die folgenden Codebeispiele veranschaulichen, wie Sie die folgenden Aufgaben ausführen, 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 System-Defined 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- Verteilt eine Nachricht an eine Fensterprozedur. Es wird in der Regel verwendet, um eine Nachricht zu verteilen, die von der GetMessage-Funktion abgerufen wird.
GetInputState- Bestimmt, ob in der Nachrichtenwarteschlange des Anrufthreads Maus- oder Tastaturmeldungen vorhanden sind.
GetMessage- Ruft eine Nachricht aus der Nachrichtenwarteschlange des aufrufenden Threads ab. Die Funktion sendet eingehende gesendete Nachrichten, bis eine gepostete Nachricht zum Abrufen verfügbar ist.
Im Gegensatz zu GetMessage-wartet die PeekMessage-Funktion nicht darauf, dass eine Nachricht vor der Rückgabe gepostet 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 angibt, von dem Zeitpunkt, zu dem das System gestartet wurde, bis zum Zeitpunkt der Erstellung der Nachricht (d. h. in der Nachrichtenwarteschlange des Threads platziert).
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 InSendMessageEx--Funktion, 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 einem anderen Prozess) gesendet wurde.
PeekMessage- Sendet eingehende gesendete Nachrichten, überprüft die Threadnachrichtenwarteschlange auf eine gepostete Nachricht und ruft die Nachricht ab (sofern vorhanden).
PostMessage- Veröffentlicht 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 veröffentlichen, die einem Thread zugeordnet ist, verwenden Sie die PostThreadMessage--Funktion.
PostQuitMessage- Gibt dem System an, dass ein Thread eine Anforderung zum Beenden (beenden) vorgenommen hat. Sie wird in der Regel als Reaktion auf eine WM_DESTROY Nachricht verwendet.
PostThreadMessage- Sendet eine Nachricht in der Nachrichtenwarteschlange des angegebenen Threads. Es wird zurückgegeben, ohne darauf zu warten, dass der Thread die Nachricht verarbeitet.
RegisterWindowMessage Definiert eine neue Fenstermeldung, die im gesamten System garantiert eindeutig ist. Der Nachrichtenwert kann beim Senden oder Veröffentlichen 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 typ SENDASYNCPROC 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.
Wenn Sie eine Nachricht senden und sofort zurückgeben möchten, verwenden Sie die SendMessageCallback- oder SendNotifyMessage--Funktion. Um eine Nachricht in der Nachrichtenwarteschlange eines Threads zu posten und sofort zurückzugeben, verwenden Sie die PostMessage- oder PostThreadMessage- funktion.
SendMessageCallback- Sendet die angegebene Nachricht an ein Fenster oder fenster. Sie 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, übergibt das Ergebnis der Nachrichtenverarbeitung und einen anwendungsdefinierten Wert an die Rückruffunktion.
SendMessageTimeout- Sendet die angegebene Nachricht an eins 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 gibt erst zurück, wenn die Fensterprozedur die Nachricht verarbeitet hat. Wenn das Fenster von einem anderen Thread erstellt wurde, SendNotifyMessage die Nachricht an die Fensterprozedur weitergibt und sofort zurückgegeben wird; 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 zusätzliche Nachrichteninformationen eines Threads abzurufen.
TranslateMessage- Übersetzt virtuelle Schlüsselmeldungen in Zeichennachrichten. Die Zeichennachrichten werden in der Nachrichtenwarteschlange des aufrufenden Threads gepostet, um beim nächsten Aufruf des Threads die GetMessage- oder PeekMessage-Funktion zu lesen.
WaitMessage- Gibt die Steuerung für andere Threads zurück, wenn ein Thread keine anderen Nachrichten in der 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 BroadcastSystemMessageExverweigert hat.
MSG- Enthält Nachrichteninformationen aus der Nachrichtenwarteschlange eines Threads.