Schaltflächenmeldungen
Eine Schaltfläche kann Nachrichten an das übergeordnete Fenster senden, und ein übergeordnetes Fenster kann Nachrichten an eine Schaltfläche senden.
Die folgenden Themen werden in diesem Abschnitt erläutert.
- Senden von Nachrichten an Schaltflächen
- Behandeln von Nachrichten über eine Schaltfläche
- Benachrichtigungsmeldungen von Schaltflächen
- Schaltflächenfarbenmeldungen
- Schaltflächenstandardmeldungsverarbeitung
- Zugehörige Themen
Senden von Nachrichten an Schaltflächen
Ein übergeordnetes Fenster kann Nachrichten an eine Schaltfläche in einem überlappenden oder untergeordneten Fenster senden, indem die SendMessage-Funktion verwendet wird, oder es kann Nachrichten an eine Schaltfläche in einem Dialogfeld senden, indem die Funktionen SendDlgItemMessage, CheckDlgButton, CheckRadioButton und IsDlgButtonChecked verwendet werden .
Eine Anwendung kann die BM_GETCHECK Nachricht verwenden, um den Prüfstatus eines Kontrollkästchens oder Optionsfelds abzurufen. Eine Anwendung kann auch die BM_GETSTATE Nachricht verwenden, um die aktuellen Zustände der Schaltfläche (Überprüfungszustand, Pushzustand und Fokuszustand) abzurufen. Um Informationen zu einem bestimmten Zustand abzurufen, verwenden Sie eine Bitmaske für den zurückgegebenen Zustandswert.
Die BM_SETCHECK Nachricht legt den Prüfstatus eines Kontrollkästchens oder Optionsfelds fest. die Nachricht gibt null zurück. Die BM_SETSTATE Nachricht legt den Druckzustand einer Schaltfläche fest. Diese Nachricht gibt ebenfalls null zurück. Die BM_SETSTYLE Nachricht ändert den Stil einer Schaltfläche. Es ist für das Ändern von Schaltflächenstilen innerhalb eines Typs konzipiert (z. B. ändern eines Kontrollkästchens in ein automatisches Kontrollkästchen). Es ist nicht für den Wechsel zwischen Typen konzipiert (z. B. das Ändern eines Kontrollkästchens in ein Optionsfeld). Eine Anwendung sollte eine Schaltfläche nicht von einem Typ in einen anderen ändern.
Eine Schaltfläche des BS_BITMAP - oder BS_ICON-Stils zeigt anstelle von Text eine Bitmap oder ein Symbol an. Die BM_SETIMAGE Nachricht verknüpft ein Handle einer Bitmap oder einem Symbol mit einer Schaltfläche. Die BM_GETIMAGE Nachricht ruft ein Handle für die Bitmap oder das Symbol ab, die einer Schaltfläche zugeordnet ist.
Eine Anwendung kann auch die DM_GETDEFID-Nachricht verwenden, um den Bezeichner des Standard-Schaltflächensteuerelements in einem Dialogfeld abzurufen. Eine Anwendung kann die DM_SETDEFID-Meldung verwenden, um die Standard-Drucktaste für ein Dialogfeld festzulegen.
Das Aufrufen der Funktion CheckDlgButton oder CheckRadioButton entspricht dem Senden einer BM_SETCHECK Nachricht. Das Aufrufen der IsDlgButtonChecked-Funktion entspricht dem Senden einer BM_GETCHECK Nachricht.
Behandeln von Nachrichten über eine Schaltfläche
Benachrichtigungen von einer Schaltfläche werden entweder als WM_COMMAND oder WM_NOTIFY Nachrichten gesendet. Informationen darüber, welche Nachricht verwendet wird, finden Sie auf der Referenzseite für jede Benachrichtigung.
Weitere Informationen zum Behandeln von Nachrichten finden Sie unter Kontrollmeldungen. Siehe auch Schaltflächenmeldungen.
Benachrichtigungsmeldungen von Schaltflächen
Wenn der Benutzer auf eine Schaltfläche klickt, ändert sich ihr Zustand, und die Schaltfläche sendet Benachrichtigungscodes in Form von WM_COMMAND Nachrichten an das übergeordnete Fenster. Beispielsweise sendet ein Drucktastensteuerelement den BN_CLICKED Benachrichtigungscode, wenn der Benutzer die Schaltfläche auswähbt. In allen Fällen (mit Ausnahme von BCN_HOTITEMCHANGE) enthält das Wort mit niedriger Reihenfolge des wParam-Parameters den Steuerelementbezeichner, das Wort mit hoher Reihenfolge von wParam den Benachrichtigungscode und der lParam-Parameter das Steuerelementfensterhandle.
Sowohl die Nachricht als auch die Antwort des übergeordneten Fensters hängen vom Typ, Der Stil und dem aktuellen Status der Schaltfläche ab. Im Folgenden finden Sie die Schaltflächenbenachrichtigungscodes, die eine Anwendung überwachen und verarbeiten soll.
Benachrichtigungscode | BESCHREIBUNG |
---|---|
BCN_HOTITEMCHANGE | Die Maus hat den Clientbereich einer Schaltfläche betreten oder verlassen. |
BN_CLICKED | Der Benutzer hat auf eine Schaltfläche geklickt. |
BN_DBLCLK oder BN_DOUBLECLICKED | Der Benutzer hat auf eine Schaltfläche doppelklicken. |
BN_DISABLE | Eine Schaltfläche ist deaktiviert. |
BN_PUSHED oder BN_HILITE | Der Benutzer hat eine Schaltfläche gedrückt. |
BN_KILLFOCUS | Die Schaltfläche hat den Tastaturfokus verloren. |
BN_PAINT | Die Schaltfläche sollte bemalt werden. |
BN_SETFOCUS | Die Schaltfläche hat den Tastaturfokus erhalten. |
BN_UNPUSHED oder BN_UNHILITE | Die Schaltfläche wird nicht mehr gedrückt. |
Eine Schaltfläche sendet die Benachrichtigungscodes BN_DISABLE, BN_PUSHED, BN_KILLFOCUS, BN_PAINT, BN_SETFOCUS und BN_UNPUSHED Benachrichtigungscodes nur, wenn sie über das BS_NOTIFY Format verfügt. BN_DBLCLK Benachrichtigungscodes werden automatisch für BS_USERBUTTON-, BS_RADIOBUTTON- und BS_OWNERDRAW-Schaltflächen gesendet. Andere Schaltflächentypen senden BN_DBLCLK nur, wenn sie über das BS_NOTIFY Format verfügen. Alle Schaltflächen senden den BN_CLICKED Benachrichtigungscode unabhängig von ihren Schaltflächenformaten.
Bei automatischen Tasten ändert das System den Druckzustand und zeichnet die Taste. In diesem Fall verarbeitet die Anwendung in der Regel nur die Benachrichtigungscodes BN_CLICKED und BN_DBLCLK . Bei Schaltflächen, die nicht automatisch sind, antwortet die Anwendung in der Regel auf den Benachrichtigungscode, indem sie eine Nachricht sendet, um den Status der Schaltfläche zu ändern. Informationen zum Senden von Nachrichten an Schaltflächen finden Sie unter Senden von Nachrichten an Schaltflächen.
Wenn der Benutzer eine vom Besitzer gezeichnete Schaltfläche auswählt, sendet die Schaltfläche dem übergeordneten Fenster eine WM_DRAWITEM Nachricht, die den Bezeichner des zu zeichnenden Steuerelements sowie Informationen zu seinen Dimensionen und seinem Zustand enthält.
Schaltflächenfarbenmeldungen
Das System stellt Standardfarbwerte für Schaltflächen bereit. Eine Anwendung kann die Standardwerte für diese Farben abrufen, indem sie die GetSysColor-Funktion aufruft, oder die Werte durch Aufrufen der SetSysColors-Funktion festlegen. In der folgenden Tabelle sind die Standardwerte für Schaltflächenfarben aufgeführt.
Wert | Element farbig |
---|---|
COLOR_BTNFACE | Schaltflächenflächen. |
COLOR_BTNHIGHLIGHT | Markieren Sie den Bereich (der obere und linke Rand) einer Schaltfläche. |
COLOR_BTNSHADOW | Schattenbereich (unten und rechts) einer Schaltfläche. |
COLOR_BTNTEXT | Regulärer (nicht formatierter) Text in Schaltflächen. |
COLOR_GRAYTEXT | Deaktivierter (grauer) Text in Schaltflächen. Diese Farbe wird auf 0 festgelegt, wenn der aktuelle Anzeigetreiber keine einfarbige graue Farbe unterstützt. |
COLOR_WINDOW | Fensterhintergründe. |
COLOR_WINDOWFRAME | Fensterrahmen. |
COLOR_WINDOWTEXT | Text in Fenstern. |
Das Aufrufen von SetSysColors wirkt sich jedoch auf alle Anwendungen aus, sodass Sie diese Funktion nicht aufrufen sollten, um Schaltflächen für Ihre Anwendung anzupassen.
Das System sendet vor dem Zeichnen einer Schaltfläche eine WM_CTLCOLORBTN Nachricht an das übergeordnete Fenster einer Schaltfläche. Diese Meldung enthält ein Handle für den Gerätekontext der Schaltfläche und ein Handle für das untergeordnete Fenster. Das übergeordnete Fenster kann diese Handles verwenden, um den Text und die Hintergrundfarben der Schaltfläche zu ändern. Allerdings reagieren nur vom Besitzer gezeichnete Schaltflächen auf das übergeordnete Fenster, das die Nachricht verarbeitet.
Schaltflächenstandardmeldungsverarbeitung
Die Fensterprozedur für die vordefinierte Steuerelementfensterklasse führt die Standardverarbeitung für alle Nachrichten durch, die von der Schaltflächensteuerungsprozedur nicht verarbeitet werden. Wenn die Schaltflächensteuerungsprozedur false für eine nachricht zurückgibt, überprüft die vordefinierte Fensterprozedur die Nachrichten und führt die in der folgenden Tabelle aufgeführten Standardaktionen aus.
Nachricht | Standardaktion | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
BM_CLICK | Sendet der Schaltfläche einen WM_LBUTTONDOWN und eine WM_LBUTTONUP Nachricht und sendet dem übergeordneten Fenster einen BN_CLICKED Benachrichtigungscode. | ||||||||||||||||
BM_GETCHECK | Gibt den Überprüfungsstatus der Schaltfläche zurück. | ||||||||||||||||
BM_GETIMAGE | Gibt ein Handle für die Bitmap oder das Symbol zurück, die der Schaltfläche oder NULL zugeordnet ist, wenn die Schaltfläche keine Bitmap oder kein Symbol enthält. | ||||||||||||||||
BM_GETSTATE | Gibt den aktuellen Überprüfungszustand, den Pushzustand und den Fokuszustand der Schaltfläche zurück. | ||||||||||||||||
BM_SETCHECK | Legt den Überprüfungsstatus für alle Stile von Optionsfeldern und Kontrollkästchen fest. Wenn der wParam-Parameter für Optionsfelder größer als 0 (null) ist, erhält die Schaltfläche die WS_TABSTOP Formatvorlage. | ||||||||||||||||
BM_SETIMAGE | Ordnet der Schaltfläche das angegebene Bitmap- oder Symbolhandle zu und gibt der vorherigen Bitmap oder dem vorherigen Symbol ein Handle zurück. | ||||||||||||||||
BM_SETSTATE | Legt den Pushzustand der Schaltfläche fest. Bei vom Besitzer gezeichneten Schaltflächen wird eine WM_DRAWITEM Nachricht an das übergeordnete Fenster gesendet, wenn sich der Status der Schaltfläche geändert hat. | ||||||||||||||||
BM_SETSTYLE | Legt den Schaltflächenstil fest. Wenn das Wort mit niedriger Ordnung des lParam-ParametersTRUE ist, wird die Schaltfläche neu gezeichnet. | ||||||||||||||||
WM_CHAR | Aktiviert ein Kontrollkästchen oder ein automatisches Kontrollkästchen, wenn der Benutzer die Plustaste (+) oder gleich (=) drückt. Deaktiviert ein Kontrollkästchen oder ein automatisches Kontrollkästchen, wenn der Benutzer die Minustaste (–) drückt. | ||||||||||||||||
WM_ENABLE | Zeichnet die Schaltfläche. | ||||||||||||||||
WM_ERASEBKGND | Löscht den Hintergrund für vom Besitzer gezeichnete Schaltflächen. Die Hintergründe anderer Schaltflächen werden im Rahmen der verarbeitung von WM_PAINT und WM_ENABLE gelöscht. | ||||||||||||||||
WM_GETDLGCODE | Gibt Werte zurück, die den Typ der Eingabe angeben, die von der Standardschaltflächenprozedur verarbeitet wird, wie in der folgenden Tabelle gezeigt.
|
||||||||||||||||
WM_GETFONT | Gibt ein Handle für die aktuelle Schriftart zurück. | ||||||||||||||||
WM_KEYDOWN | Drückt die Taste, wenn der Benutzer die LEERTASTE drückt. | ||||||||||||||||
WM_KEYUP | Gibt die Mausaufnahme für alle Fälle außer der TAB-TASTE frei. | ||||||||||||||||
WM_KILLFOCUS | Entfernt das Fokusrechteck von einer Schaltfläche. Bei Drucktasten und Standard-Drucktasten wird das Fokusrechteck ungültig. Wenn die Schaltfläche über die Mausaufnahme verfügt, wird die Aufnahme losgelassen, auf die Schaltfläche wird nicht geklickt, und jeder Pushzustand wird entfernt. | ||||||||||||||||
WM_LBUTTONDBLCLK | Sendet einen BN_DBLCLK Benachrichtigungscode für Optionsfelder und vom Besitzer gezeichnete Schaltflächen an das übergeordnete Fenster. Bei anderen Schaltflächen wird ein Doppelklick als WM_LBUTTONDOWN-Nachricht verarbeitet. | ||||||||||||||||
WM_LBUTTONDOWN | Hebt die Schaltfläche hervor, wenn sich die Position des Mauszeigers innerhalb des Clientrechtecks der Schaltfläche befindet. | ||||||||||||||||
WM_LBUTTONUP | Gibt die Mausaufnahme frei, wenn die Schaltfläche über die Mauserfassung verfügt. | ||||||||||||||||
WM_MOUSEMOVE | Führt die gleiche Aktion wie WM_LBUTTONDOWN aus, wenn die Schaltfläche über die Mausaufnahme verfügt. Andernfalls wird keine Aktion ausgeführt. | ||||||||||||||||
WM_NCCREATE | Wandelt eine beliebige BS_OWNERDRAW-Schaltfläche in eine BS_PUSHBUTTON-Schaltfläche um. | ||||||||||||||||
WM_NCHITTEST | Gibt HTTRANSPARENT zurück, wenn das Schaltflächensteuerelement ein Gruppenfeld ist. | ||||||||||||||||
WM_PAINT | Zeichnet die Schaltfläche entsprechend ihrem Stil und aktuellen Zustand. | ||||||||||||||||
WM_SETFOCUS | Zeichnet ein Fokusrechteck auf die Schaltfläche, die den Fokus erhält. Für Optionsfelder und automatische Optionsfelder wird dem übergeordneten Fenster ein BN_CLICKED Benachrichtigungscode gesendet. | ||||||||||||||||
WM_SETFONT | Legt eine neue Schriftart fest und aktualisiert optional das Fenster. | ||||||||||||||||
WM_SETTEXT | Legt den Text der Schaltfläche fest. Im Fall eines Gruppenfelds übergibt die Nachricht den bereits vorhandenen Text, bevor das Gruppenfeld mit dem neuen Text neu gezeichnet wird. | ||||||||||||||||
WM_SYSKEYUP | Gibt die Mausaufnahme für alle Fälle außer der TAB-TASTE frei. |
Die vordefinierte Fensterprozedur übergibt alle anderen Nachrichten zur Standardverarbeitung an die DefWindowProc-Funktion .
Zugehörige Themen