Klasa CComboBox udostępnia funkcjonalność pola kombi systemu Windows.
Pole kombi składa się z pola listy w połączeniu z formantu statyczne lub formancie edycyjnym. Część pola listy kontrolą mogą być wyświetlane przez cały czas lub mogą tylko drop down, gdy użytkownik wybierze strzałkę rozwijaną obok kontroli.
Aktualnie zaznaczonego elementu (jeśli są) w polu listy jest wyświetlany w statycznego lub formantu edycyjnego. Ponadto jeśli pole kombi zostało zapisane w stylu listy rozwijanej, użytkownik może wpisać znak początkowej jednego z elementów na liście, a pole listy, jeżeli widoczne, wyróżni następny element w tym początkowy znak.
W po&niższej tabeli porównano .nbsp styletrzy pola kombi;
Styl
Kiedy jest widoczne pole listy?
Statyczne lub Edycja kontroli?
Proste
Zawsze
Edycja
Drop-down
Gdy rozwijana
Edycja
Lista rozwijana
Gdy rozwijana
Statyczne
Można utworzyć obiekt CComboBox , z szablonu okno dialogowe lub bezpośrednio w kodzie. W obu przypadkach pierwsze wywołanie konstruktora CComboBox do konstruowania obiektu CComboBox ; następnie wywołać funkcję Państwa Utwórz , aby utworzyć formant i dołączyć go do obiektu CComboBox.
Jeśli chcesz obsługiwać Windows powiadomienia wiadomości wysłane przez pole kombi nadrzędnego (zazwyczaj klasy pochodzące z CDialog), dodać funkcję Państwa wejścia i programu obsługi wiadomości wiadomości mapę do klasy nadrzędnej dla każdej wiadomości.
Każdy wpis wiadomości Mapa ma następującą postać:
ON_Powiadomienie(identyfikator,memberFxn)
w przypadku gdy identyfikator określa identyfikator okno potomne formant pola kombi, wysyłanie powiadomień i memberFxn jest nazwą funkcji członek nadrzędny, którą napisali do obsługi powiadamiania.
Nadrzędnego prototyp jest następująco:
afx_msgnieważnememberFxn();
Kolejność, w której zostaną wysłane niektóre powiadomienia nie są przewidywalne. W szczególności powiadomienie CBN_SELCHANGE może wystąpić przed lub po notyfikacji CBN_CLOSEUP.
Potencjalne wiadomości Mapa wpisy są następujące:
O&N_CBN_CLOSEUPnbsp; (Windows 3.1 oraz później.) Pola listy, pola kombi został zamknięty. To powiadomienie nie jest wysyłana na pole kombi, które zostało zapisane w stylu CBS_SIMPLE.
O&N_CBN_DBLCLKnbsp; Użytkownik kliknie dwukrotnie ciąg w polu listy pola kombi. To powiadomienie jest wysyłane tylko dla pola kombi w stylu CBS_SIMPLE . Dla pola kombi stylem, CBS_DROPDOWN lub CBS_DROPDOWNLIST kliknij dwukrotnie nie może występować, ponieważ jednym kliknięciem ukryje pole listy.
O&N_CBN_DROPDOWNnbsp; Pola listy, pola kombi ma rozwijanych (należy ustanowić widoczne). To powiadomienie może występować tylko dla pola kombi stylem, CBS_DROPDOWN lub CBS_DROPDOWNLIST.
O&N_CBN_EDITCHANGEnbsp; Użytkownik podjął działania, który może być zmieniony tekst w formancie edycyjnym część pola kombi. W przeciwieństwie do wiadomości CBN_EDITUPDATE wiadomość jest wysyłana po systemu Windows aktualizacje ekranu. Nie jest wysyłana, jeśli pole kombi zostało zapisane w stylu CBS_DROPDOWNLIST.
O&N_CBN_EDITUPDATEnbsp; Część formancie edycyjnym pola kombi ma zamiar wyświetlić zmieniony tekst. To powiadomienie jest wysyłane, po kontroli został sformatowany tekst, ale zanim wyświetli tekst. Nie jest wysyłana, jeśli pole kombi zostało zapisane w stylu CBS_DROPDOWNLIST.
O&N_CBN_ERRSPACEnbsp; Pole kombi nie może przydzielić pamięci, aby spełnić szczególne żądanie.
O&N_CBN_SELENDCANCELnbsp; (Windows 3.1 oraz później.) Wskazuje, że należy anulować wybór użytkownika. Użytkownik kliknie element, a następnie kliknie inne okno lub formantu, aby ukryć pola listy, pola kombi. To powiadomienie jest wysyłane przed CBN_CLOSEUP wiadomość z powiadomieniem do wskazania, że wybór użytkownika powinno być zignorowane. Wiadomość z powiadomieniem CBN_SELENDCANCEL lub CBN_SELENDOK jest wysyłane, nawet jeżeli wiadomość z powiadomieniem CBN_CLOSEUP nie jest wysyłany (jak w przypadku pola kombi w stylu CBS_SIMPLE ).
O&N_CBN_SELENDOKnbsp; Użytkownik wybierze element i następnie naciśnie klawisz ENTER lub kliknie klawisz Strzałka w dół, aby ukryć pola listy, pola kombi. To powiadomienie jest wysyłane przed wiadomości CBN_CLOSEUP , aby wskazać, że wybór użytkownika powinny być uważane za ważne. Wiadomość z powiadomieniem CBN_SELENDCANCEL lub CBN_SELENDOK jest wysyłane, nawet jeżeli wiadomość z powiadomieniem CBN_CLOSEUP nie jest wysyłany (jak w przypadku pola kombi w stylu CBS_SIMPLE ).
O&N_CBN_KILLFOCUSnbsp; Pola kombi traci fokus.
O&N_CBN_SELCHANGEnbsp; Zaznaczenie pola listy, pola kombi ma być zmieniane od użytkownika, klikając w polu listy albo zmieniając zaznaczenia za pomocą klawiszy strzałek. Podczas przetwarzania tego komunikatu, tekst w formancie edycyjnym pola kombi tylko mogą być pobierane za pośrednictwem GetLBText lub innej podobnej funkcji. Nie można GetWindowText.
O&N_CBN_SETFOCUSnbsp; Pola kombi aktywowany.
Po utworzeniu obiektu CComboBox w oknie dialogowym (za pośrednictwem okna dialogowego zasobu) obiektu CComboBox automatycznie jest niszczony, kiedy użytkownik zamyka okno dialogowe.
Po osadzeniu obiekt CComboBox w ramach innego obiektu window, nie musisz zniszczyć ją. Po utworzeniu obiektu CComboBox na stosie, został zniszczony automatycznie. Jeśli tworzony jest obiekt CComboBox na stercie za pomocą nowej funkcji, należy wywołać usunąć obiektu do niszczenia, kiedy niszczony jest pole kombi systemu Windows.