Freigeben über


Nachrichten steuern

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

Die folgenden Themen werden behandelt.

Nachrichten an allgemeine Steuerelemente

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

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. Im folgenden Beispielcode wird der Text des ausgewählten Strukturansichtselements abgerufen, zuerst mithilfe der unformatierten Nachrichten und zweitens mithilfe der entsprechenden Makros. Gehen Sie davon aus, dass das Steuerpunkt des Steuerelementfensters ist.

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 Nachricht an alle Fenster der obersten Ebene. Ihr Fenster auf oberster Ebene muss die WM_SYSCOLORCHANGE Nachricht an die allgemeinen Steuerelemente weiterleiten; andernfalls werden die Steuerelemente nicht über die Farbänderung benachrichtigt. Durch das Weiterleiten 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 Nachricht nicht an die Symbolleiste weitergeleitet wird, bleiben die Symbolleistenschaltflächen in ihrer ursprünglichen Farbe (oder sogar in eine Kombination alter und neuer Farben), während sich die Farbe anderer 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 von Änderungen zu benachrichtigen, senden allgemeine 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 seit langer Zeit in der API enthalten sind) 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 Mitglied enthält. Die Struktur enthält den Benachrichtigungscode und identifiziert das allgemeine Steuerelement, das die Benachrichtigung gesendet hat. Die Bedeutung der verbleibenden Strukturmmber( falls vorhanden) variiert je nach Benachrichtigungscode.

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

Beispielcode, der zeigt, wie WM_NOTIFY Nachrichten behandelt werden, finden Sie im Referenzthema zu dieser Nachricht.

allgemeine Steuerelementreferenz