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 behandelt.
- Senden von Nachrichten an Schaltflächen
- Behandeln von Nachrichten aus einer Schaltfläche
- Benachrichtigungen über Schaltflächen
- schaltflächenfarbene Nachrichten
- Schaltfläche "Standardnachrichtenverarbeitung"
- Verwandte 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 funktion SendMessage verwendet wird, oder nachrichten an eine Schaltfläche in einem Dialogfeld mithilfe der SendDlgItemMessage, CheckDlgButton, CheckRadioButtonund IsDlgButtonChecked Funktionen senden.
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 abzurufen (den Überprüfungszustand, den Pushstatus und den Fokusstatus). Verwenden Sie zum Abrufen von Informationen zu einem bestimmten Zustand 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 Pushzustand einer Schaltfläche fest; Diese Nachricht gibt auch Null zurück. Die BM_SETSTYLE Nachricht ändert den Stil einer Schaltfläche. Es wurde für das Ändern von Schaltflächenformatvorlagen innerhalb eines Typs entwickelt (z. B. das Ändern eines Kontrollkästchens in ein automatisches Kontrollkästchen). Es ist nicht für das Ändern zwischen Typen vorgesehen (z. B. Ändern eines Kontrollkästchens in ein Optionsfeld). Eine Anwendung sollte eine Schaltfläche nicht von einem Typ in einen anderen ändern.
Eine Schaltfläche der BS_BITMAP- oder BS_ICON Formatvorlage zeigt anstelle von Text eine Bitmap oder ein Symbol an. Die BM_SETIMAGE Nachricht ordnet ein Handle einer Bitmap oder einem Symbol einer Schaltfläche zu. 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-Knopfdruck-Steuerelements in einem Dialogfeld abzurufen. Eine Anwendung kann die DM_SETDEFID Nachricht verwenden, um die Standardtaste für ein Dialogfeld festzulegen.
Das Aufrufen der CheckDlgButton oder CheckRadioButton Funktion entspricht dem Senden einer BM_SETCHECK Nachricht. Das Aufrufen der IsDlgButtonChecked--Funktion entspricht dem Senden einer BM_GETCHECK Nachricht.
Behandeln von Nachrichten aus einer Schaltfläche
Benachrichtigungen von einer Schaltfläche werden entweder als WM_COMMAND oder WM_NOTIFY Nachrichten gesendet. Informationen dazu, welche Nachricht verwendet wird, finden Sie auf der Referenzseite für jede Benachrichtigung.
Weitere Informationen zum Behandeln von Nachrichten finden Sie unter Steuerelementnachrichten. Siehe auch Schaltflächenmeldungen.
Benachrichtigungen von Schaltflächen
Wenn der Benutzer auf eine Schaltfläche klickt, ändert sich der Status, und die Schaltfläche sendet Benachrichtigungscodes in Form von WM_COMMAND Nachrichten an das übergeordnete Fenster. Beispielsweise sendet ein Knopfdruck-Steuerelement den BN_CLICKED Benachrichtigungscode, wenn der Benutzer die Schaltfläche auswäht. In allen Fällen (mit Ausnahme von BCN_HOTITEMCHANGE) enthält das Wort mit niedriger Reihenfolge des wParam--Parameters den Steuerelementbezeichner, das hochgeordnete Wort wParam- den Benachrichtigungscode, und der lParam Parameter enthält den Steuerfensterpunkt.
Sowohl die Nachricht als auch die Antwort des übergeordneten Fensters hängen vom Typ, der Formatvorlage und dem aktuellen Status der Schaltfläche ab. Im Folgenden sind die Schaltflächenbenachrichtigungscodes aufgeführt, die eine Anwendung überwachen und verarbeiten soll.
Benachrichtigungscode | Beschreibung |
---|---|
BCN_HOTITEMCHANGE | Die Maus hat den Clientbereich einer Schaltfläche eingegeben 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 gezeichnet werden. |
BN_SETFOCUS | Die Schaltfläche hat den Tastaturfokus erhalten. |
BN_UNPUSHED oder BN_UNHILITE | Die Taste wird nicht mehr gedrückt. |
Eine Schaltfläche sendet die BN_DISABLE, BN_PUSHED, BN_KILLFOCUS, BN_PAINT, BN_SETFOCUSund BN_UNPUSHED Benachrichtigungscodes nur, wenn sie die BS_NOTIFY Formatvorlage aufweist. BN_DBLCLK Benachrichtigungscodes werden automatisch für schaltflächen BS_USERBUTTON, BS_RADIOBUTTONund BS_OWNERDRAW gesendet. Andere Schaltflächentypen senden BN_DBLCLK nur, wenn sie die BS_NOTIFY Formatvorlage aufweisen. Alle Schaltflächen senden den BN_CLICKED Benachrichtigungscode unabhängig von deren Schaltflächenformatvorlagen.
Bei automatischen Tasten ändert das System den Druckzustand und zeichnet die Taste. In diesem Fall verarbeitet die Anwendung in der Regel nur die BN_CLICKED und BN_DBLCLK Benachrichtigungscodes. Bei Schaltflächen, die nicht automatisch sind, antwortet die Anwendung in der Regel auf den Benachrichtigungscode, indem eine Nachricht gesendet wird, 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 schaltfläche "Besitzer gezeichnet" auswählt, sendet die Schaltfläche dem übergeordneten Fenster eine WM_DRAWITEM Nachricht, die den Bezeichner des zu zeichnenden Steuerelements und Informationen zu seinen Abmessungen und 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 aufrufen 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ächen-Gesichter. |
COLOR_BTNHIGHLIGHT | Hervorhebungsbereich (obere und linke Ränder) einer Schaltfläche. |
COLOR_BTNSHADOW | Schattenbereich (untere und rechte Ränder) einer Schaltfläche. |
COLOR_BTNTEXT | Normaler Text (nichtgrayed) in Schaltflächen. |
COLOR_GRAYTEXT | Deaktivierter (grauer) Text in Schaltflächen. Diese Farbe ist auf 0 festgelegt, wenn der aktuelle Anzeigetreiber keine Volltongraufarbe 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 eine WM_CTLCOLORBTN Nachricht an das übergeordnete Fenster einer Schaltfläche, bevor eine Schaltfläche gezeichnet wird. Diese Nachricht 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 Ziehpunkte verwenden, um die Text- und Hintergrundfarben der Schaltfläche zu ändern. Allerdings reagieren nur vom Besitzer gezeichnete Schaltflächen auf das übergeordnete Fenster, in dem die Nachricht verarbeitet wird.
Standardnachrichtenverarbeitung für Schaltflächen
Die Fensterprozedur für die vordefinierte Schaltflächen-Steuerelementfensterklasse führt die Standardverarbeitung für alle Nachrichten aus, die die Schaltflächensteuerungsprozedur nicht verarbeitet. Wenn die Schaltflächensteuerungsprozedur FALSE- für jede 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 die Schaltfläche eine WM_LBUTTONDOWN und eine WM_LBUTTONUP Nachricht und sendet das übergeordnete Fenster einen BN_CLICKED Benachrichtigungscode. | ||||||||||||||||
BM_GETCHECK | Gibt den Überprüfungsstatus der Schaltfläche zurück. | ||||||||||||||||
BM_GETIMAGE | Gibt ein Handle an die Bitmap oder das Symbol zurück, die der Schaltfläche oder NULL- zugeordnet ist, wenn die Schaltfläche keine Bitmap oder ein Symbol enthält. | ||||||||||||||||
BM_GETSTATE | Gibt den aktuellen Überprüfungszustand, den Pushstatus und den Fokusstatus der Schaltfläche zurück. | ||||||||||||||||
BM_SETCHECK | Legt den Kontrollkästchenstatus für alle Formatvorlagen von Optionsfeldern und Kontrollkästchen fest. Wenn der wParam--Parameter für Optionsfelder größer als Null ist, erhält die Schaltfläche die WS_TABSTOP Formatvorlage. | ||||||||||||||||
BM_SETIMAGE | Ordnet das angegebene Bitmap- oder Symbolhandle der Schaltfläche zu und gibt ein Handle an die vorherige Bitmap oder das vorherige Symbol zurück. | ||||||||||||||||
BM_SETSTATE | Legt den Pushstatus 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 die Schaltflächenformatvorlage fest. Wenn das Wort mit niedriger Reihenfolge des lParam- Parameters TRUEist, wird die Schaltfläche neu gezeichnet. | ||||||||||||||||
WM_CHAR | Aktiviert ein Kontrollkästchen oder ein automatisches Kontrollkästchen, wenn der Benutzer die Plustasten (+) oder gleich (=) drückt. Löscht 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 als Teil der WM_PAINT und WM_ENABLE Verarbeitung gelöscht. | ||||||||||||||||
WM_GETDLGCODE | Gibt Werte zurück, die den Typ der Eingabe angeben, die von der Standardschaltflächenprozedur verarbeitet werden, wie in der folgenden Tabelle dargestellt.
|
||||||||||||||||
WM_GETFONT | Gibt ein Handle zur aktuellen 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 aus einer Schaltfläche. Für Pushtasten und Standardtasten ist das Fokusrechteck ungültig. Wenn die Schaltfläche über die Mausaufnahme verfügt, wird die Aufnahme losgelassen, die Schaltfläche wird nicht geklickt, und der Pushzustand wird entfernt. | ||||||||||||||||
WM_LBUTTONDBLCLK | Sendet einen BN_DBLCLK Benachrichtigungscode an das übergeordnete Fenster für Optionsfelder und vom Besitzer gezeichnete Schaltflächen. 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 im Clientrechteck der Schaltfläche befindet. | ||||||||||||||||
WM_LBUTTONUP | Gibt die Mausaufnahme frei, wenn die Schaltfläche die Mausaufnahme hatte. | ||||||||||||||||
WM_MOUSEMOVE | Führt dieselbe Aktion wie WM_LBUTTONDOWNaus, wenn die Schaltfläche über die Mauserfassung 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ächen-Steuerelement ein Gruppenfeld ist. | ||||||||||||||||
WM_PAINT | Zeichnet die Schaltfläche entsprechend der Formatvorlage und dem aktuellen Zustand. | ||||||||||||||||
WM_SETFOCUS | Zeichnet ein Fokusrechteck auf der Schaltfläche, die den Fokus erhält. Für Optionsfelder und automatische Optionsfelder wird das übergeordnete 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 überschreibt die Nachricht den bereits vorhandenen Text, bevor das Gruppenfeld mit dem neuen Text aktualisiert wird. | ||||||||||||||||
WM_SYSKEYUP | Gibt die Mausaufnahme für alle Fälle außer der TAB-TASTE frei. |
Die vordefinierte Fensterprozedur übergibt alle anderen Nachrichten an die DefWindowProc--Funktion für die Standardverarbeitung.
Verwandte Themen