Die CComboBox -Klasse stellt die Funktionalität eines Windows-Kombinationsfelds.
Ein Kombinationsfeld besteht aus einem Listenfeld kombiniert mit einem statischen Steuerelement oder Edit-Steuerelement. Der Listenfeld Teil des Steuerelements kann jederzeit angezeigt werden oder möglicherweise nur Dropdown wenn der Benutzer den Dropdown-Pfeil neben dem Steuerelement auswählt.
Das derzeit ausgewählte Element in der Liste (falls vorhanden) wird in der statischen oder edit-Steuerelement. Zusätzlich, wenn das Kombinationsfeld Dropdown-Listenfeld Stil hat, der Benutzer kann das erste Zeichen eines der Elemente in der Liste eingeben, und im Listenfeld wenn sichtbar ist, wird das nächste Element mit das erste Zeichen markieren.
Die folge&nde Tabelle vergleicht die drei Kombinationsfeld- Stile.nbsp;
Stil
Wenn im Listenfeld sichtbar ist?
Statische oder Edit-Steuerelement?
Einfache
Immer
Bearbeiten
Dropdown-Liste
Wenn sank
Bearbeiten
Dropdown-Liste
Wenn sank
Statisch
Sie können ein CComboBox -Objekt entweder eine Dialogfeldvorlage oder direkt im Code erstellen. In beiden Fällen zuerst rufen Sie den Konstruktor CComboBox auf das CComboBox -Objekt konstruieren; dann rufen Sie die Create Member-Funktion zum Erstellen des Steuerelements, und fügen Sie es auf das CComboBox -Objekt.
Wenn Sie ein Kombinationsfeld zu seinem übergeordneten Element (in der Regel einer von CDialogabgeleiteten Klasse) per Windows-Benachrichtigungen behandeln möchten, fügen Sie eine Meldungszuordnung Eintrag und Meldungshandler Memberfunktion auf die übergeordnete Klasse für jede Nachricht.
Jeder Eintrag der Meldungszuordnung nimmt folgende form:
ON_Benachrichtigung(Id,MemberFxn)
wo Id gibt die ChildWindow ID des im Kombinationsfeld-Steuerelement senden die Benachrichtigungs- und MemberFxn ist der Name des übergeordneten Member-Funktion, die Sie geschrieben haben, um die Benachrichtigung zu verarbeiten.
Die übergeordnete Funktionsprototyp ist wie folgt:
afx_msgprivatevoidmemberFxn();
Die Reihenfolge, in der bestimmte Benachrichtigungen gesendet werden, kann nicht vorhergesagt werden. Insbesondere kann eine CBN_SELCHANGE -Benachrichtigung vor oder nach einer Benachrichtigung CBN_CLOSEUP auftreten.
Potenzielle Meldungszuordnungseinträge sind folgende:
O&N_CBN_CLOSEUPNbsp; (Windows 3.1 und höher.) Im Listenfeld eines Kombinationsfelds geschlossen hat. Diese Benachrichtigung ist nicht für ein Kombinationsfeld gesendet, die den CBS_SIMPLE Stil hat.
O&N_CBN_DBLCLKNbsp; Der Benutzer doppelklickt eine Zeichenfolge im Listenfeld eines Kombinationsfeldes. Diese Benachrichtigung wird nur gesendet, für ein Kombinationsfeld mit dem CBS_SIMPLE Stil. Für ein Kombinationsfeld mit dem Stil CBS_DROPDOWN oder CBS_DROPDOWNLIST kann kein Doppelklick auftreten, da ein Klick im Listenfeld verbirgt.
O&N_CBN_DROPDOWNNbsp; Im Listenfeld eines Kombinationsfelds ist zu drop-down (sichtbar gemacht werden). Diese Benachrichtigung kann nur für ein Kombinationsfeld mit dem Stil CBS_DROPDOWN oder CBS_DROPDOWNLIST auftreten.
O&N_CBN_EDITCHANGENbsp; Der Benutzer hat eine Maßnahme ergriffen, die den Text im Abschnitt bearbeiten-Steuerelement ein Kombinationsfeld geändert haben kann. Im Gegensatz zu der CBN_EDITUPDATE -Nachricht wird diese Nachricht gesendet, nachdem Windows den Bildschirm aktualisiert. Es wird nicht gesendet, wenn das Kombinationsfeld CBS_DROPDOWNLIST Stil hat.
O&N_CBN_EDITUPDATENbsp; Der bearbeiten-Steuerelement Teil eines Kombinationsfeldes soll geänderten Text anzeigen. Diese Benachrichtigung wird gesendet, nachdem das Steuerelement den Text formatiert hat, jedoch bevor den Text angezeigt. Es wird nicht gesendet, wenn das Kombinationsfeld CBS_DROPDOWNLIST Stil hat.
O&N_CBN_ERRSPACENbsp; Das Kombinationsfeld kann nicht genug Speicher um eine bestimmte Anforderung zu erfüllen.
O&N_CBN_SELENDCANCELNbsp; (Windows 3.1 und höher.) Gibt an, dass die Auswahl des Benutzers abgebrochen werden soll. Der Benutzer klickt ein Element und dann auf ein anderes Fenster oder Steuerelement auf das Listenfeld eines Kombinationsfeldes ausblenden. Diese Nachricht wird gesendet, bevor die CBN_CLOSEUP -Benachrichtigung an, dass die Auswahl des Benutzers ignoriert werden sollen. Die CBN_SELENDCANCEL oder CBN_SELENDOK -Nachricht wird gesendet, auch wenn die CBN_CLOSEUP -Nachricht (wie im Fall eines Kombinationsfelds mit dem CBS_SIMPLE Stil) nicht gesendet wird.
O&N_CBN_SELENDOKNbsp; Der Benutzer wählt ein Element und dann drückt die ENTER-Taste oder die DOWN-Taste, um das Listenfeld eines Kombinationsfeldes ausblenden klickt. Diese Nachricht wird gesendet, bevor die CBN_CLOSEUP -Nachricht an, dass die Auswahl des Benutzers als gültig angesehen werden sollte. Die CBN_SELENDCANCEL oder CBN_SELENDOK -Nachricht wird gesendet, auch wenn die CBN_CLOSEUP -Nachricht (wie im Fall eines Kombinationsfelds mit dem CBS_SIMPLE Stil) nicht gesendet wird.
O&N_CBN_KILLFOCUSNbsp; Das Kombinationsfeld verliert den Eingabefokus.
O&N_CBN_SELCHANGENbsp; Die Auswahl im Listenfeld eines Kombinationsfeldes soll als einer der Benutzer im Listenfeld klicken oder ändern die Auswahl mithilfe der Pfeiltasten geändert werden. Beim Verarbeiten dieser Nachricht kann der Text im Bearbeitungssteuerelement im Kombinationsfeld nur über GetLBText oder eine andere ähnliche Funktion abgerufen werden. GetWindowText kann nicht verwendet werden.
O&N_CBN_SETFOCUSNbsp; Das Kombinationsfeld erhält den Eingabefokus.
Wenn Sie ein CComboBox -Objekt innerhalb eines Dialogfelds (durch eine Dialogfeldressource) erstellen, wird das CComboBox -Objekt automatisch zerstört, wenn der Benutzer das Dialogfeld schließt.
Wenn Sie eine CComboBox -Objekt in ein anderes Fensterobjekt einbetten, müssen Sie nicht zu zerstören. Wenn Sie das CComboBox -Objekt auf dem Stapel erstellt, wird es automatisch zerstört. Wenn Sie das CComboBox -Objekt auf dem Heap mithilfe der neuen Funktion erstellen, müssen Sie Löschen für das Objekt aufrufen, es zu zerstören, wenn das Kombinationsfeld Windows zerstört wird.