Steuern von Nachrichten

Dieser Abschnitt enthält Informationen dazu, wie Windows-Nachrichten für die Kommunikation mit Steuerelementen verwendet werden.

Die folgenden Themen werden erläutert.

Nachrichten an allgemeine Steuerelemente

Da es sich bei allgemeinen Steuerelementen um Fenster handelt, kann eine Anwendung mithilfe gängiger Microsoft Win32-Nachrichten wie WM_GETFONT oder WM_SETTEXT mit ihnen kommunizieren. Darüber hinaus unterstützt die Fensterklasse jedes allgemeinen Steuerelements eine Reihe von steuerelementspezifischen Nachrichten. In der Regel verwendet eine Anwendung SendMessage oder SendDlgItemMessage , um Nachrichten an das Steuerelement zu übergeben (häufig Erhalten von Informationen im Rückgabewert).

Einige gängige Steuerelemente verfügen auch über eine Reihe von Makros, die eine Anwendung anstelle von SendMessage verwenden kann. Die Makros sind in der Regel einfacher zu verwenden als die Funktionen. Der folgende Beispielcode ruft den Text des ausgewählten Strukturansichtselements ab, zunächst mithilfe der unformatierten Nachrichten und dann mithilfe der entsprechenden Makros. Angenommen, hwnd ist das Handle des Steuerelementfensters.

BOOL fSuccess;
WCHAR itemText[99];
TVITEM tvItem = { 0 };
tvItem.mask = TVIF_TEXT;
tvItem.cchTextMax = ARRAYSIZE(itemText);
tvItem.pszText = itemText;

// This...
tvItem.hItem = (HTREEITEM)SendMessage(hwnd, TVM_GETNEXTITEM, TVGN_CARET, NULL);
fSuccess = SendMessage(hwnd, TVM_GETITEM, 0, (LPARAM)&tvItem);

// ... is equivalent to this.
tvItem.hItem = TreeView_GetSelection(hwnd);
fSuccess = TreeView_GetItem(hwnd, &tvItem);

Wenn eine Änderung an den Systemfarbeinstellungen vorgenommen wird, sendet Windows eine WM_SYSCOLORCHANGE-Meldung an alle Fenster der obersten Ebene. Das Fenster der obersten Ebene muss die WM_SYSCOLORCHANGE Nachricht an die allgemeinen Steuerelemente weiterleiten. Andernfalls werden die Steuerelemente nicht über die Farbänderung benachrichtigt. Durch die Weiterleitung der Nachricht wird sichergestellt, dass die von Ihren allgemeinen Steuerelementen verwendeten Farben mit denen übereinstimmen, die von anderen Benutzeroberflächenobjekten verwendet werden. Beispielsweise verwendet ein Symbolleistensteuerelement die Farbe "3D-Objekte", um seine Schaltflächen zu zeichnen. Wenn der Benutzer die Farbe des 3D-Objekts ändert, aber die WM_SYSCOLORCHANGE Meldung nicht an die Symbolleiste weitergeleitet wird, bleiben die Symbolleistenschaltflächen in ihrer ursprünglichen Farbe (oder ändern sich sogar in eine Kombination aus alten und neuen Farben), während sich die Farbe der anderen Schaltflächen im System ändert.

Benachrichtigungen von Steuerelementen

Steuerelemente sind untergeordnete Fenster, die Benachrichtigungen an das übergeordnete Fenster senden, wenn Ereignisse, die normalerweise durch Eingaben des Benutzers ausgelöst werden, im Steuerelement auftreten. Die Anwendung basiert auf diesen Benachrichtigungen, um zu bestimmen, welche Aktion der Benutzer ausführen möchte. Mit Ausnahme von Trackbars, die die WM_HSCROLL und WM_VSCROLL Nachrichten verwenden, um das übergeordnete Element über Änderungen zu informieren, senden gängige Steuerelemente Benachrichtigungen entweder als WM_COMMAND oder WM_NOTIFY Nachrichten, wie im Referenzthema für die Benachrichtigung angegeben. In der Regel verwenden ältere Benachrichtigungen (die sich schon lange in der API befunden haben) WM_COMMAND.

Der lParam-Parameter von WM_NOTIFY ist entweder die Adresse einer NMHDR-Struktur oder die Adresse einer größeren Struktur, die NMHDR als erstes Element enthält. Die -Struktur enthält den Benachrichtigungscode und identifiziert das allgemeine Steuerelement, das die Benachrichtigung gesendet hat. Die Bedeutung der verbleibenden Strukturmember hängt ggf. vom Benachrichtigungscode ab.

Jeder Typ von allgemeinen Steuerelementen verfügt über einen entsprechenden Satz von Benachrichtigungscodes. Die allgemeine Steuerelementbibliothek stellt auch Benachrichtigungscodes bereit, die von mehreren gängigen Steuerelementtypen gesendet werden können. In der Dokumentation finden Sie informationen zur Steuerung von Interesse, um zu bestimmen, welche Benachrichtigungscodes gesendet werden und welches Format sie annehmen.

Beispielcode, der zeigt, wie WM_NOTIFY Nachrichten behandelt werden, finden Sie im Referenzthema für diese Nachricht.

Allgemeine Steuerelementreferenz