CComboBox Klasa

Udostępnia funkcje pola kombi systemu Windows.

Składnia

class CComboBox : public CWnd

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
CComboBox::CComboBox CComboBox Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CComboBox::AddString Dodaje ciąg na końcu listy w polu listy pola kombi lub na posortowanej pozycji pól listy ze stylem CBS_SORT .
CComboBox::Clear Usuwa (czyści) bieżące zaznaczenie, jeśli istnieje, w kontrolce edycji.
CComboBox::CompareItem Wywoływana przez platformę w celu określenia względnej pozycji nowego elementu listy w posortowanym polu kombi rysowanym przez właściciela.
CComboBox::Copy Kopiuje bieżące zaznaczenie, jeśli istnieje, do Schowka w CF_TEXT formacie.
CComboBox::Create Tworzy pole kombi i dołącza je do CComboBox obiektu.
CComboBox::Cut Usuwa (wycina) bieżące zaznaczenie, jeśli istnieje, w kontrolce edycji i kopiuje usunięty tekst do Schowka w CF_TEXT formacie.
CComboBox::DeleteItem Wywoływana przez platformę, gdy element listy zostanie usunięty z pola kombi rysowanego przez właściciela.
CComboBox::DeleteString Usuwa ciąg z pola listy pola kombi.
CComboBox::Dir Dodaje listę nazw plików do pola listy pola kombi.
CComboBox::DrawItem Wywoływana przez strukturę, gdy zmienia się wizualny aspekt pola kombi rysowanego przez właściciela.
CComboBox::FindString Znajduje pierwszy ciąg zawierający określony prefiks w polu listy pola kombi.
CComboBox::FindStringExact Znajduje pierwszy ciąg pola listy (w polu kombi), który pasuje do określonego ciągu.
CComboBox::GetComboBoxInfo Pobiera informacje o CComboBox obiekcie.
CComboBox::GetCount Pobiera liczbę elementów w polu listy pola kombi.
CComboBox::GetCueBanner Pobiera tekst cue wyświetlany dla kontrolki pola kombi.
CComboBox::GetCurSel Pobiera indeks aktualnie wybranego elementu, jeśli istnieje, w polu listy pola kombi.
CComboBox::GetDroppedControlRect Pobiera współrzędne ekranu widocznego pola listy listy (rozwijanej) pola kombi listy rozwijanej.
CComboBox::GetDroppedState Określa, czy pole listy pola kombi listy rozwijanej jest widoczne (porzucane).
CComboBox::GetDroppedWidth Pobiera minimalną dozwoloną szerokość dla części listy rozwijanej pola kombi.
CComboBox::GetEditSel Pobiera pozycje znaków początkowych i końcowych bieżącego zaznaczenia w kontrolce edycji pola kombi.
CComboBox::GetExtendedUI Określa, czy pole kombi ma domyślny interfejs użytkownika, czy rozszerzony interfejs użytkownika.
CComboBox::GetHorizontalExtent Zwraca szerokość w pikselach, którą część pola kombi można przewijać w poziomie.
CComboBox::GetItemData Pobiera podaną przez aplikację wartość 32-bitową skojarzona z określonym elementem pola kombi.
CComboBox::GetItemDataPtr Pobiera dostarczony przez aplikację wskaźnik 32-bitowy skojarzony z określonym elementem pola kombi.
CComboBox::GetItemHeight Pobiera wysokość elementów listy w polu kombi.
CComboBox::GetLBText Pobiera ciąg z pola listy pola kombi.
CComboBox::GetLBTextLen Pobiera długość ciągu w polu listy pola kombi.
CComboBox::GetLocale Pobiera identyfikator ustawień regionalnych dla pola kombi.
CComboBox::GetMinVisible Pobiera minimalną liczbę widocznych elementów na liście rozwijanej bieżącego pola kombi.
CComboBox::GetTopIndex Zwraca indeks pierwszego widocznego elementu w części pola listy pola kombi.
CComboBox::InitStorage Wstępnie przydziela bloki pamięci dla elementów i ciągów w części pola listy pola kombi.
CComboBox::InsertString Wstawia ciąg do pola listy pola kombi.
CComboBox::LimitText Ogranicza długość tekstu, który użytkownik może wprowadzić w kontrolce edycji pola kombi.
CComboBox::MeasureItem Wywoływana przez strukturę w celu określenia wymiarów pola kombi podczas tworzenia pola kombi rysowanego przez właściciela.
CComboBox::Paste Wstawia dane ze Schowka do kontrolki edycji na bieżącym położeniu kursora. Dane są wstawiane tylko wtedy, gdy Schowek zawiera dane w CF_TEXT formacie.
CComboBox::ResetContent Usuwa wszystkie elementy z pola listy i edytuje kontrolkę pola kombi.
CComboBox::SelectString Wyszukuje ciąg w polu listy pola kombi, a jeśli ciąg zostanie znaleziony, wybierze ciąg w polu listy i skopiuje ciąg do kontrolki edycji.
CComboBox::SetCueBanner Ustawia tekst wskazówek wyświetlany dla kontrolki pola kombi.
CComboBox::SetCurSel Wybiera ciąg w polu listy pola kombi.
CComboBox::SetDroppedWidth Ustawia minimalną dozwoloną szerokość dla części listy rozwijanej pola kombi.
CComboBox::SetEditSel Wybiera znaki w kontrolce edycji pola kombi.
CComboBox::SetExtendedUI Wybiera domyślny interfejs użytkownika lub rozszerzony interfejs użytkownika dla pola kombi, które ma CBS_DROPDOWN styl lub CBS_DROPDOWNLIST .
CComboBox::SetHorizontalExtent Ustawia szerokość w pikselach, którą część pola kombi można przewijać w poziomie.
CComboBox::SetItemData Ustawia wartość 32-bitową skojarzona z określonym elementem w polu kombi.
CComboBox::SetItemDataPtr Ustawia wskaźnik 32-bitowy skojarzony z określonym elementem w polu kombi.
CComboBox::SetItemHeight Ustawia wysokość elementów listy w polu kombi lub wysokość części kontrolki edycji (lub statycznego tekstu) pola kombi.
CComboBox::SetLocale Ustawia identyfikator ustawień regionalnych dla pola kombi.
CComboBox::SetMinVisibleItems Ustawia minimalną liczbę widocznych elementów na liście rozwijanej bieżącego pola kombi.
CComboBox::SetTopIndex Informuje część pola listy pola kombi, aby wyświetlić element z określonym indeksem u góry.
CComboBox::ShowDropDown Wyświetla lub ukrywa pole listy pola kombi, które ma CBS_DROPDOWN styl lub CBS_DROPDOWNLIST .

Uwagi

Pole kombi składa się z pola listy połączonego ze statyczną kontrolką lub kontrolką edycji. Część kontrolki w polu listy może być wyświetlana przez cały czas lub może być wyświetlana tylko wtedy, gdy użytkownik wybierze strzałkę listy rozwijanej obok kontrolki.

Aktualnie wybrany element (jeśli istnieje) w polu listy jest wyświetlany w kontrolce statycznej lub edycji. Ponadto jeśli pole kombi ma styl listy rozwijanej, użytkownik może wpisać początkowy znak jednego z elementów na liście, a pole listy, jeśli jest widoczne, będzie wyróżniać następny element z tym początkowym znakiem.

W poniższej tabeli porównaliśmy trzy style pola kombi.

Styl Gdy pole listy jest widoczne Kontrolka statyczna lub edytowana
Prosty Zawsze Edytowanie
Rozwijana Po usunięciu Edytowanie
Drop-down list Po usunięciu Static

Obiekt można utworzyć CComboBox na podstawie szablonu okna dialogowego lub bezpośrednio w kodzie. W obu przypadkach najpierw wywołaj konstruktora CComboBox , aby skonstruować CComboBox obiekt, a następnie wywołaj Create funkcję składową, aby utworzyć kontrolkę i dołączyć ją do CComboBox obiektu.

Jeśli chcesz obsługiwać komunikaty powiadomień systemu Windows wysyłane przez pole kombi do elementu nadrzędnego (zazwyczaj klasy pochodzącej z CDialogklasy ), dodaj funkcję elementu członkowskiego mapy komunikatów i elementu członkowskiego obsługi komunikatów do klasy nadrzędnej dla każdego komunikatu.

Każdy wpis mapy komunikatów ma następujący formularz:

ON_Notification( id, memberFxn )

gdzie id określa identyfikator okna podrzędnego kontrolki pola kombi wysyłającej powiadomienie i memberFxn jest nazwą nadrzędnej funkcji składowej, która została zapisana w celu obsługi powiadomienia.

Prototyp funkcji elementu nadrzędnego jest następujący:

afx_msg void memberFxn( );

Nie można przewidzieć kolejności wysyłania określonych powiadomień. W szczególności CBN_SELCHANGE powiadomienie może wystąpić przed powiadomieniem lub po nim CBN_CLOSEUP .

Potencjalne wpisy mapy komunikatów są następujące:

  • ON_CBN_CLOSEUP (System Windows 3.1 lub nowszy). Pole listy pola kombi zostało zamknięte. Ten komunikat powiadomienia nie jest wysyłany dla pola kombi, które ma CBS_SIMPLE styl.

  • ON_CBN_DBLCLK Użytkownik klika dwukrotnie ciąg w polu listy pola kombi. Ten komunikat powiadomienia jest wysyłany tylko dla pola kombi ze stylem CBS_SIMPLE . W przypadku pola kombi z CBS_DROPDOWN stylem lub CBS_DROPDOWNLIST nie można kliknąć dwukrotnie, ponieważ pojedyncze kliknięcie powoduje ukrycie pola listy.

  • ON_CBN_DROPDOWN Pole listy pola kombi ma zostać wyświetlone (być widoczne). Ten komunikat powiadomienia może wystąpić tylko dla pola kombi z stylem CBS_DROPDOWN lub CBS_DROPDOWNLIST .

  • ON_CBN_EDITCHANGE Użytkownik podjął akcję, która mogła zmienić tekst w części kontrolki edycji pola kombi. W przeciwieństwie do komunikatu CBN_EDITUPDATE ta wiadomość jest wysyłana po zaktualizowaniu ekranu przez system Windows. Nie jest wysyłany, jeśli pole kombi ma CBS_DROPDOWNLIST styl.

  • ON_CBN_EDITUPDATE Część kontrolki edycji pola kombi ma wyświetlać zmieniony tekst. Ta wiadomość powiadomienia jest wysyłana po sformatowaniu tekstu przez kontrolkę, ale przed wyświetleniem tekstu. Nie jest wysyłany, jeśli pole kombi ma CBS_DROPDOWNLIST styl.

  • ON_CBN_ERRSPACE Pole kombi nie może przydzielić wystarczającej ilości pamięci, aby spełnić określone żądanie.

  • ON_CBN_SELENDCANCEL (System Windows 3.1 lub nowszy). Wskazuje, że wybór użytkownika powinien zostać anulowany. Użytkownik klika element, a następnie klika kolejne okno lub kontrolkę, aby ukryć pole listy pola kombi. Ten komunikat powiadomienia jest wysyłany przed komunikatem CBN_CLOSEUP powiadomienia, aby wskazać, że wybór użytkownika powinien zostać zignorowany. Wiadomość CBN_SELENDCANCEL lub powiadomienie jest wysyłana nawet wtedy, gdy CBN_CLOSEUP wiadomość z powiadomieniem nie jest wysyłana (tak jak w przypadku pola kombi ze stylemCBS_SIMPLE).CBN_SELENDOK

  • ON_CBN_SELENDOK Użytkownik wybiera element, a następnie naciska klawisz ENTER lub klika klawisz STRZAŁKA W DÓŁ, aby ukryć pole listy pola kombi. Ta wiadomość powiadomienia jest wysyłana przed komunikatem CBN_CLOSEUP , aby wskazać, że wybór użytkownika powinien być uznawany za prawidłowy. Wiadomość CBN_SELENDCANCEL lub powiadomienie jest wysyłana nawet wtedy, gdy CBN_CLOSEUP wiadomość z powiadomieniem nie jest wysyłana (tak jak w przypadku pola kombi ze stylemCBS_SIMPLE).CBN_SELENDOK

  • ON_CBN_KILLFOCUS Pole kombi traci fokus wejściowy.

  • ON_CBN_SELCHANGE Wybór w polu listy pola kombi zostanie zmieniony w wyniku kliknięcia użytkownika w polu listy lub zmiany zaznaczenia przy użyciu klawiszy strzałek. Podczas przetwarzania tego komunikatu tekst w kontrolce edycji pola kombi można pobrać tylko za pośrednictwem GetLBText lub innej podobnej funkcji. GetWindowText nie można użyć.

  • ON_CBN_SETFOCUS Pole kombi odbiera fokus wejściowy.

Jeśli utworzysz CComboBox obiekt w oknie dialogowym (za pomocą zasobu okna dialogowego), CComboBox obiekt zostanie automatycznie zniszczony, gdy użytkownik zamknie okno dialogowe.

Jeśli osadzasz CComboBox obiekt w innym obiekcie okna, nie musisz go zniszczyć. Jeśli utworzysz CComboBox obiekt na stosie, zostanie on zniszczony automatycznie. Jeśli utworzysz CComboBox obiekt na stercie przy użyciu new funkcji, musisz wywołać delete obiekt, aby go zniszczyć, gdy pole kombi systemu Windows zostanie zniszczone.

Uwaga Jeśli chcesz obsługiwać WM_KEYDOWN komunikaty i WM_CHAR komunikaty, musisz podklasować kontrolki pól edycji i listy pól kombi, wyprowadzać klasy z CEdit i CListBoxi i dodawać programy obsługi dla tych komunikatów do klas pochodnych. W celu uzyskania więcej informacji, zobacz następujący temat: CWnd::SubclassWindow.

Hierarchia dziedziczenia

CObject

CCmdTarget

CWnd

CComboBox

Wymagania

Nagłówka:afxwin.h

CComboBox::AddString

Dodaje ciąg do pola listy pola kombi.

int AddString(LPCTSTR lpszString);

Parametry

lpszString
Wskazuje ciąg zakończony na wartość null, który ma zostać dodany.

Wartość zwracana

Jeśli wartość zwracana jest większa lub równa 0, jest to indeks oparty na zerach do ciągu w polu listy. Wartość zwracana jest CB_ERR wtedy, gdy wystąpi błąd. Zwracana wartość to CB_ERRSPACE , jeśli do przechowywania nowego ciągu jest za mało miejsca.

Uwagi

Jeśli pole listy nie zostało utworzone ze stylem CBS_SORT , ciąg zostanie dodany na końcu listy. W przeciwnym razie ciąg zostanie wstawiony do listy, a lista zostanie posortowana.

Uwaga

Ta funkcja nie jest obsługiwana przez kontrolkę systemu Windows ComboBoxEx . Aby uzyskać więcej informacji na temat tej kontrolki, zobacz ComboBoxEx Kontrolki w zestawie Windows SDK.

Aby wstawić ciąg do określonej lokalizacji na liście, użyj funkcji składowej InsertString .

Przykład

// Add 20 items to the combo box.
CString str;
for (int i = 0; i < 20; i++)
{
   str.Format(_T("item string %d"), i);
   m_pComboBox->AddString(str);
}

CComboBox::CComboBox

CComboBox Tworzy obiekt.

CComboBox();

Przykład

// Declare a local CComboBox object.
CComboBox myComboBox;

// Declare a dynamic CComboBox object.
CComboBox *pmyComboBox = new CComboBox;

CComboBox::Clear

Usuwa (czyści) bieżące zaznaczenie, jeśli istnieje, w kontrolce edycji pola kombi.

void Clear();

Uwagi

Aby usunąć bieżące zaznaczenie i umieścić usuniętą zawartość w Schowku, użyj funkcji składowej Cut .

Przykład

// Delete all of the text from the combo box's edit control.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Clear();

CComboBox::CompareItem

Wywoływana przez strukturę w celu określenia względnej pozycji nowego elementu w części pola listy posortowanego pola kombi właściciel-rysowanie.

virtual int CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct);

Parametry

lpCompareItemStruct
Długi wskaźnik do COMPAREITEMSTRUCT struktury.

Wartość zwracana

Wskazuje względną pozycję dwóch elementów opisanych w COMPAREITEMSTRUCT strukturze. Może to być dowolna z następujących wartości:

Wartość Znaczenie
-1 Element 1 sortuje przed pozycją 2.
0 Element 1 i element 2 posortuj to samo.
1 Element 1 sortuje po elemencie 2.

Zobacz CWnd::OnCompareItem , aby zapoznać się z opisem elementu COMPAREITEMSTRUCT.

Uwagi

Domyślnie ta funkcja składowa nic nie robi. Jeśli utworzysz pole kombi owner-draw z LBS_SORT stylem, musisz zastąpić tę funkcję składową, aby ułatwić strukturę sortowania nowych elementów dodanych do pola listy.

Przykład

// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example compares two items using strcmp to sort items in reverse
// alphabetical order. The combo box control was created with the
// following code:
//   pmyComboBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      CBS_SORT|CBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
int CMyComboBox::CompareItem(LPCOMPAREITEMSTRUCT lpCompareItemStruct)
{
   int iComp = 0;
   ASSERT(lpCompareItemStruct->CtlType == ODT_COMBOBOX);
   LPCTSTR lpszText1 = (LPCTSTR)lpCompareItemStruct->itemData1;
   ASSERT(lpszText1 != NULL);
   LPCTSTR lpszText2 = (LPCTSTR)lpCompareItemStruct->itemData2;
   ASSERT(lpszText2 != NULL);

   if (NULL != lpszText1 && NULL != lpszText2)
   {
      iComp = _tcscmp(lpszText2, lpszText1);
   }

   return iComp;
}

CComboBox::Copy

Kopiuje bieżące zaznaczenie, jeśli istnieje, w kontrolce edycji pola kombi na Schowek w CF_TEXT formacie.

void Copy();

Przykład

// Copy all of the text from the combo box's edit control
// to the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Copy();

CComboBox::Create

Tworzy pole kombi i dołącza je do CComboBox obiektu.

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parametry

dwStyle
Określa styl pola kombi. Zastosuj dowolną kombinację stylów pola kombi do pola.

rect
Wskazuje położenie i rozmiar pola kombi. Może być strukturą RECT lub obiektem.CRect

pParentWnd
Określa okno nadrzędne pola kombi (zazwyczaj CDialog). Nie może to być NULL.

nID
Określa identyfikator kontrolki pola kombi.

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.

Uwagi

Obiekt jest konstruowany CComboBox w dwóch krokach. Najpierw wywołaj konstruktor, a następnie wywołaj Createmetodę , która tworzy pole kombi systemu Windows i dołącza je do CComboBox obiektu.

Podczas Create wykonywania system Windows wysyła WM_NCCREATEkomunikaty , WM_CREATE, WM_NCCALCSIZEi WM_GETMINMAXINFO do pola kombi.

Te komunikaty są domyślnie obsługiwane przez OnNcCreatefunkcje składowe , OnCreate, OnNcCalcSizei OnGetMinMaxInfo w klasie bazowej CWnd . Aby rozszerzyć domyślną obsługę komunikatów, należy utworzyć klasę z CComboBoxklasy , dodać mapę komunikatów do nowej klasy i zastąpić poprzednie funkcje składowe programu obsługi komunikatów. Zastąpij OnCreatena przykład , aby wykonać wymaganą inicjację dla nowej klasy.

Zastosuj następujące style okna do kontrolki pola kombi. :

  • WS_CHILD Zawsze

  • WS_VISIBLE Zwykle

  • WS_DISABLED Rzadko

  • WS_VSCROLL Aby dodać pionowe przewijanie pola listy w polu kombi

  • WS_HSCROLL Aby dodać poziome przewijanie pola listy w polu kombi

  • WS_GROUP Aby grupować kontrolki

  • WS_TABSTOP Aby uwzględnić pole kombi w kolejności tabulacji

Przykład

m_pComboBox->Create(
    WS_CHILD | WS_VISIBLE | WS_VSCROLL | CBS_DROPDOWNLIST,
    CRect(10, 10, 200, 100), pParentWnd, 1);

CComboBox::Cut

Usuwa (wycina) bieżące zaznaczenie, jeśli istnieje, w kontrolce edycji pola kombi i kopiuje usunięty tekst do Schowka w CF_TEXT formacie.

void Cut();

Uwagi

Aby usunąć bieżące zaznaczenie bez umieszczania usuniętego tekstu w Schowku, wywołaj funkcję składową Clear .

Przykład

// Delete all of the text from the combo box's edit control and copy it
// to the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Cut();

CComboBox::DeleteItem

Wywoływana przez platformę, gdy użytkownik usuwa element z obiektu rysowania CComboBox właściciela lub niszczy pole kombi.

virtual void DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct);

Parametry

lpDeleteItemStruct
Długi wskaźnik struktury systemu Windows DELETEITEMSTRUCT zawierający informacje o usuniętym elemencie. Zobacz CWnd::OnDeleteItem opis tej struktury.

Uwagi

Domyślna implementacja tej funkcji nic nie robi. Zastąpi tę funkcję, aby ponownie wyrysować pole kombi zgodnie z potrzebami.

Przykład

// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example simply dumps the item's text. The combo box control was
// created with the following code:
//   pmyComboBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      CBS_SORT|CBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
void CMyComboBox::DeleteItem(LPDELETEITEMSTRUCT lpDeleteItemStruct)
{
   ASSERT(lpDeleteItemStruct->CtlType == ODT_COMBOBOX);
   LPTSTR lpszText = (LPTSTR)lpDeleteItemStruct->itemData;
   ASSERT(lpszText != NULL);

   AFXDUMP(lpszText);
}

CComboBox::DeleteString

Usuwa element w pozycji nIndex z pola kombi.

int DeleteString(UINT nIndex);

Parametry

nIndex
Określa indeks do ciągu, który ma zostać usunięty.

Wartość zwracana

Jeśli wartość zwracana jest większa lub równa 0, jest to liczba ciągów pozostałych na liście. Wartość zwracana to CB_ERR , jeśli nIndex określa indeks większy niż liczba elementów na liście.

Uwagi

Wszystkie poniższe nIndex elementy przenoszą się teraz w dół o jedną pozycję. Jeśli na przykład pole kombi zawiera dwa elementy, usunięcie pierwszego elementu spowoduje, że pozostały element będzie teraz w pierwszej pozycji. nIndex=0 dla elementu w pierwszej pozycji.

Przykład

// Delete every item from the combo box.
for (int i = m_pComboBox->GetCount() - 1; i >= 0; i--)
{
   m_pComboBox->DeleteString(i);
}

CComboBox::Dir

Dodaje listę nazw plików lub dysków do pola listy pola kombi.

int Dir(
    UINT attr,
    LPCTSTR lpszWildCard);

Parametry

attr
Może być dowolną kombinacją enum wartości opisanych w CFile::GetStatus pliku lub dowolnej kombinacji następujących wartości:

  • DDL_READWRITE Plik może być odczytywany lub zapisywany.

  • DDL_READONLY Plik można odczytać, ale nie zapisywać.

  • DDL_HIDDEN Plik jest ukryty i nie jest wyświetlany na liście katalogów.

  • DDL_SYSTEM Plik jest plikiem systemowym.

  • DDL_DIRECTORY Nazwa określona przez lpszWildCard określa katalog.

  • DDL_ARCHIVE Plik został zarchiwizowany.

  • DDL_DRIVES Uwzględnij wszystkie dyski zgodne z nazwą określoną przez lpszWildCard.

  • DDL_EXCLUSIVE Flaga wyłączna. Jeśli flaga wyłączna jest ustawiona, wyświetlane są tylko pliki określonego typu. W przeciwnym razie pliki określonego typu są wyświetlane oprócz "normalnych" plików.

lpszWildCard
Wskazuje ciąg specyfikacji pliku. Ciąg może zawierać symbole wieloznaczne (na przykład *.*).

Wartość zwracana

Jeśli wartość zwracana jest większa lub równa 0, jest to indeks zerowy ostatniego pliku dodanego do listy. Wartość zwracana jest CB_ERR w przypadku wystąpienia błędu. Zwracana wartość to CB_ERRSPACE , jeśli do przechowywania nowych ciągów jest za mało miejsca.

Uwagi

Ta funkcja nie jest obsługiwana przez kontrolkę systemu Windows ComboBoxEx . Aby uzyskać więcej informacji na temat tej kontrolki, zobacz ComboBoxEx Kontrolki w zestawie Windows SDK.

Przykład

// Add all the files and directories in the windows directory.
TCHAR lpszWinPath[MAX_PATH], lpszOldPath[MAX_PATH];
VERIFY(0 < ::GetWindowsDirectory(lpszWinPath, MAX_PATH));

// Make the windows directory the current directory.
::GetCurrentDirectory(MAX_PATH, lpszOldPath);
::SetCurrentDirectory(lpszWinPath);

m_pComboBox->ResetContent();
m_pComboBox->Dir(DDL_READWRITE | DDL_DIRECTORY, _T("*.*"));

// Reset the current directory to its previous path.
::SetCurrentDirectory(lpszOldPath);

CComboBox::DrawItem

Wywoływana przez platformę, gdy zmienia się wizualny aspekt pola kombi właściciela rysowania.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parametry

lpDrawItemStruct
Wskaźnik do DRAWITEMSTRUCT struktury zawierającej informacje o wymaganym typie rysunku.

Uwagi

Element itemAction członkowski DRAWITEMSTRUCT struktury definiuje akcję rysunku, która ma zostać wykonana. Zobacz CWnd::OnDrawItem opis tej struktury.

Domyślnie ta funkcja składowa nic nie robi. Zastąpi tę funkcję składową, aby zaimplementować rysunek dla obiektu rysowania CComboBox właściciela. Zanim ta funkcja składowa zakończy działanie, aplikacja powinna przywrócić wszystkie obiekty interfejsu urządzenia graficznego (GDI) wybrane dla kontekstu wyświetlania podanego w elemencie lpDrawItemStruct.

Przykład

// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example draws an item's text centered vertically and horizontally. The
// combo box control was created with the following code:
//   pmyComboBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      CBS_SORT|CBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
void CMyComboBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
   ASSERT(lpDrawItemStruct->CtlType == ODT_COMBOBOX);
   LPCTSTR lpszText = (LPCTSTR)lpDrawItemStruct->itemData;
   ASSERT(lpszText != NULL);
   CDC dc;

   dc.Attach(lpDrawItemStruct->hDC);

   // Save these value to restore them when done drawing.
   COLORREF crOldTextColor = dc.GetTextColor();
   COLORREF crOldBkColor = dc.GetBkColor();

   // If this item is selected, set the background color
   // and the text color to appropriate values. Erase
   // the rect by filling it with the background color.
   if ((lpDrawItemStruct->itemAction & ODA_SELECT) &&
       (lpDrawItemStruct->itemState & ODS_SELECTED))
   {
      dc.SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
      dc.SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
      dc.FillSolidRect(&lpDrawItemStruct->rcItem, ::GetSysColor(COLOR_HIGHLIGHT));
   }
   else
   {
      dc.FillSolidRect(&lpDrawItemStruct->rcItem, crOldBkColor);
   }

   // Draw the text.
   dc.DrawText(
       lpszText,
       (int)_tcslen(lpszText),
       &lpDrawItemStruct->rcItem,
       DT_CENTER | DT_SINGLELINE | DT_VCENTER);

   // Reset the background color and the text color back to their
   // original values.
   dc.SetTextColor(crOldTextColor);
   dc.SetBkColor(crOldBkColor);

   dc.Detach();
}

CComboBox::FindString

Znajduje, ale nie wybiera, pierwszy ciąg zawierający określony prefiks w polu listy pola kombi.

int FindString(
    int nStartAfter,
    LPCTSTR lpszString) const;

Parametry

nStartAfter
Zawiera indeks zerowy elementu przed przeszukanym pierwszym elementem. Gdy wyszukiwanie osiągnie dół pola listy, będzie kontynuowane z góry pola listy z powrotem do elementu określonego przez nStartAfter. Jeśli wartość -1, całe pole listy jest wyszukiwane od początku.

lpszString
Wskazuje ciąg zakończony na wartość null, który zawiera prefiks do wyszukania. Wyszukiwanie jest niezależne od wielkości liter, więc ten ciąg może zawierać dowolną kombinację wielkich i małych liter.

Wartość zwracana

Jeśli wartość zwracana jest większa lub równa 0, jest to indeks zerowy pasującego elementu. Jest to CB_ERR , jeśli wyszukiwanie nie powiodło się.

Uwagi

Ta funkcja nie jest obsługiwana przez kontrolkę systemu Windows ComboBoxEx . Aby uzyskać więcej informacji na temat tej kontrolki, zobacz ComboBoxEx Kontrolki w zestawie Windows SDK.

Przykład

// The string to match.
LPCTSTR lpszmyString = _T("item");

// Delete all items that begin with the specified string.
int nItem = 0;
while ((nItem = m_pComboBox->FindString(nItem, lpszmyString)) != CB_ERR)
{
   m_pComboBox->DeleteString(nItem);
}

CComboBox::FindStringExact

Wywołaj FindStringExact funkcję składową, aby znaleźć pierwszy ciąg pola listy (w polu kombi), który pasuje do ciągu określonego w elemencie lpszFind.

int FindStringExact(
    int nIndexStart,
    LPCTSTR lpszFind) const;

Parametry

nIndexStart
Określa indeks zerowy elementu przed przeszukanym pierwszym elementem. Gdy wyszukiwanie osiągnie dół pola listy, będzie kontynuowane z góry pola listy z powrotem do elementu określonego przez nIndexStart. Jeśli nIndexStart wartość to -1, całe pole listy jest wyszukiwane od początku.

lpszFind
Wskazuje ciąg zakończony na wartość null, aby wyszukać. Ten ciąg może zawierać pełną nazwę pliku, w tym rozszerzenie. Wyszukiwanie nie uwzględnia wielkości liter, więc ten ciąg może zawierać dowolną kombinację wielkich i małych liter.

Wartość zwracana

Indeks oparty na zerze pasującego elementu lub CB_ERR jeśli wyszukiwanie nie powiodło się.

Uwagi

Jeśli pole kombi zostało utworzone przy użyciu stylu rysowania właściciela, ale bez CBS_HASSTRINGS stylu, FindStringExact próbuje dopasować wartość doubleword względem wartości lpszFind.

Przykład

// The string to match.
LPCTSTR lpszmyExactString = _T("item 5");

// Delete all items that exactly match the specified string.
int nDex = 0;
while ((nDex = m_pComboBox->FindStringExact(nDex, lpszmyExactString)) != CB_ERR)
{
   m_pComboBox->DeleteString(nDex);
}

CComboBox::GetComboBoxInfo

Pobiera informacje dotyczące CComboBox obiektu.

BOOL GetComboBoxInfo(PCOMBOBOXINFO pcbi) const;

Parametry

*pcbi*<br/> A pointer to the [COMBOBOXINFO'](/windows/win32/api/winuser/ns-winuser-comboboxinfo).

Wartość zwracana

Zwraca powodzenie TRUE po FALSE niepowodzeniu.

Uwagi

Ta funkcja składowa emuluje funkcjonalność komunikatu CB_GETCOMBOBOXINFO zgodnie z opisem w zestawie WINDOWS SDK.

CComboBox::GetCount

Wywołaj tę funkcję składową, aby pobrać liczbę elementów w części pola listy pola kombi.

int GetCount() const;

Wartość zwracana

Liczba elementów. Zwrócona liczba jest większa niż wartość indeksu ostatniego elementu (indeks jest oparty na zera). Jest to CB_ERR , jeśli wystąpi błąd.

Przykład

// Add 10 items to the combo box.
CString strItem;
for (int i = 0; i < 10; i++)
{
   strItem.Format(_T("item %d"), i);
   m_pComboBox->AddString(strItem);
}

// Verify the 10 items were added to the combo box.
ASSERT(m_pComboBox->GetCount() == 10);

CComboBox::GetCueBanner

Pobiera tekst cue wyświetlany dla kontrolki pola kombi.

CString GetCueBanner() const;

BOOL GetCueBanner(
    LPTSTR lpszText,
    int cchText) const;

Parametry

lpszText
[out] Wskaźnik do buforu, który odbiera tekst baneru cue.

cchText
[in] Rozmiar buforu wskazywanego przez lpszText parametr .

Wartość zwracana

W pierwszym przeciążeniu obiekt zawierający tekst baneru cue, CString jeśli istnieje; CString w przeciwnym razie obiekt o zerowej długości.

— lub —

W drugim przeciążeniu, TRUE jeśli ta metoda zakończy się pomyślnie; w przeciwnym razie FALSE.

Uwagi

Tekst cue to monit wyświetlany w obszarze wejściowym kontrolki pola kombi. Tekst cue jest wyświetlany, dopóki użytkownik nie udostępni danych wejściowych.

Ta metoda wysyła CB_GETCUEBANNER komunikat opisany w zestawie SDK systemu Windows.

CComboBox::GetCurSel

Wywołaj tę funkcję składową, aby określić, który element w polu kombi jest zaznaczony.

int GetCurSel() const;

Wartość zwracana

Indeks zerowy aktualnie wybranego elementu w polu listy pola kombi lub CB_ERR jeśli nie wybrano żadnego elementu.

Uwagi

GetCurSel zwraca indeks do listy.

Przykład

// Select the next item of the currently selected item
// in the combo box.
int nIndex = m_pComboBox->GetCurSel();
int nCount = m_pComboBox->GetCount();
if ((nIndex != CB_ERR) && (nCount > 1))
{
   if (++nIndex < nCount)
      m_pComboBox->SetCurSel(nIndex);
   else
      m_pComboBox->SetCurSel(0);
}

CComboBox::GetDroppedControlRect

Wywołaj GetDroppedControlRect funkcję składową, aby pobrać współrzędne ekranu widocznego (porzuconego) pola listy rozwijanej pola kombi.

void GetDroppedControlRect(LPRECT lprect) const;

Parametry

lprect
Wskazuje strukturę RECT, która ma odbierać współrzędne.

Przykład

// This example move a combo box so that the upper left
// corner of the combo box is at a specific point.

// The point to move the combo box to.
CPoint myPoint(30, 10);

CRect r;

m_pComboBox->GetDroppedControlRect(&r);

m_pComboBox->GetParent()->ScreenToClient(&r);
r.OffsetRect(myPoint - r.TopLeft());
m_pComboBox->MoveWindow(&r);

CComboBox::GetDroppedState

Wywołaj funkcję składową GetDroppedState , aby określić, czy pole listy pola kombi listy rozwijanej jest widoczne (usunięte).

BOOL GetDroppedState() const;

Wartość zwracana

Nonzero, jeśli pole listy jest widoczne; w przeciwnym razie 0.

Przykład

// Show the dropdown list box if it is not already dropped.
if (!m_pComboBox->GetDroppedState())
   m_pComboBox->ShowDropDown(TRUE);

CComboBox::GetDroppedWidth

Wywołaj tę funkcję, aby pobrać minimalną dozwoloną szerokość w pikselach pola listy pola kombi.

int GetDroppedWidth() const;

Wartość zwracana

W przypadku powodzenia minimalna dozwolona szerokość w pikselach; w przeciwnym razie, CB_ERR.

Uwagi

Ta funkcja dotyczy tylko pól kombi z stylem CBS_DROPDOWN lub CBS_DROPDOWNLIST .

Domyślnie minimalna dozwolona szerokość pola listy rozwijanej wynosi 0. Minimalną dozwoloną szerokość można ustawić przez wywołanie metody SetDroppedWidth. Gdy zostanie wyświetlona część pola kombi w polu listy, jej szerokość jest większa od minimalnej dozwolonej szerokości lub szerokości pola kombi.

Przykład

Zobacz przykład dla elementu SetDroppedWidth.

CComboBox::GetEditSel

Pobiera pozycje znaków początkowych i końcowych bieżącego zaznaczenia w kontrolce edycji pola kombi.

DWORD GetEditSel() const;

Wartość zwracana

Wartość 32-bitowa zawierająca pozycję początkową w wyrazie o niskiej kolejności i pozycję pierwszego nieznaczonego znaku po zakończeniu zaznaczenia w wyrazie o wysokiej kolejności. Jeśli ta funkcja jest używana w polu kombi bez kontrolki edycji, CB_ERR zostanie zwrócona.

Przykład

DWORD dwSel;

// Set the selection to be all characters after the current selection.
if ((dwSel = m_MyComboBox.GetEditSel()) != CB_ERR)
{
   m_MyComboBox.SetEditSel(HIWORD(dwSel), -1);
}

CComboBox::GetExtendedUI

Wywołaj GetExtendedUI funkcję składową, aby określić, czy pole kombi ma domyślny interfejs użytkownika, czy rozszerzony interfejs użytkownika.

BOOL GetExtendedUI() const;

Wartość zwracana

Niezerowe, jeśli pole kombi ma rozszerzony interfejs użytkownika; w przeciwnym razie 0.

Uwagi

Rozszerzony interfejs użytkownika można zidentyfikować w następujący sposób:

  • Kliknięcie kontrolki statycznej powoduje wyświetlenie pola listy tylko dla pól kombi ze stylem CBS_DROPDOWNLIST .

  • Naciśnięcie klawisza STRZAŁKA W DÓŁ powoduje wyświetlenie pola listy (klawisz F4 jest wyłączony).

Przewijanie w kontrolce statycznej jest wyłączone, gdy lista elementów nie jest widoczna (klawisze strzałek są wyłączone).

Przykład

// Use the extended UI if it is not already set.
if (!m_pComboBox->GetExtendedUI())
   m_pComboBox->SetExtendedUI(TRUE);

CComboBox::GetHorizontalExtent

Pobiera z pola kombi szerokość w pikselach, w których część pola listy pola kombi można przewijać w poziomie.

UINT GetHorizontalExtent() const;

Wartość zwracana

Przewijana szerokość części pola kombi w pikselach.

Uwagi

Ma to zastosowanie tylko wtedy, gdy część pola listy pola kombi ma poziomy pasek przewijania.

Przykład

// Find the longest string in the combo box.
CString strText;
CSize sz;
UINT dxText = 0;
CDC *pDCCombo = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->GetLBText(i, strText);
   sz = pDCCombo->GetTextExtent(strText);

   if (sz.cx > (LONG)dxText)
      dxText = sz.cx;
}
m_pComboBox->ReleaseDC(pDCCombo);

// Set the horizontal extent only if the current extent is not large enough.
if (m_pComboBox->GetHorizontalExtent() < dxText)
{
   m_pComboBox->SetHorizontalExtent(dxText);
   ASSERT(m_pComboBox->GetHorizontalExtent() == dxText);
}

CComboBox::GetItemData

Pobiera podaną przez aplikację wartość 32-bitową skojarzona z określonym elementem pola kombi.

DWORD_PTR GetItemData(int nIndex) const;

Parametry

nIndex
Zawiera indeks zerowy elementu w polu listy pola kombi.

Wartość zwracana

Wartość 32-bitowa skojarzona z elementem lub CB_ERR jeśli wystąpi błąd.

Uwagi

Wartość 32-bitowa można ustawić za pomocą dwItemData parametru wywołania funkcji składowej SetItemData . Użyj funkcji składowej GetItemDataPtr , jeśli pobierana wartość 32-bitowa jest wskaźnikiem (void*).

Przykład

// If any item's data is equal to zero then reset it to -1.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   if (m_pComboBox->GetItemData(i) == 0)
   {
      m_pComboBox->SetItemData(i, (DWORD)-1);
   }
}

CComboBox::GetItemDataPtr

Pobiera podaną przez aplikację wartość 32-bitową skojarzona z określonym elementem pola kombi jako wskaźnik (void*).

void* GetItemDataPtr(int nIndex) const;

Parametry

nIndex
Zawiera indeks zerowy elementu w polu listy pola kombi.

Wartość zwracana

Pobiera wskaźnik lub -1, jeśli wystąpi błąd.

Przykład

LPVOID lpmyPtr = m_pComboBox->GetItemDataPtr(5);

// Check all the items in the combo box; if an item's
// data pointer is equal to my pointer then reset it to NULL.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   if (m_pComboBox->GetItemDataPtr(i) == lpmyPtr)
   {
      m_pComboBox->SetItemDataPtr(i, NULL);
   }
}

CComboBox::GetItemHeight

Wywołaj funkcję składową, GetItemHeight aby pobrać wysokość elementów listy w polu kombi.

int GetItemHeight(int nIndex) const;

Parametry

nIndex
Określa składnik pola kombi, którego wysokość ma zostać pobrana. nIndex Jeśli parametr ma wartość -1, pobierana jest wysokość części kontrolki edycji (lub tekstu statycznego). Jeśli pole kombi ma CBS_OWNERDRAWVARIABLE styl, określa indeks zerowy elementu listy, nIndex którego wysokość ma zostać pobrana. nIndex W przeciwnym razie należy ustawić wartość 0.

Wartość zwracana

Wysokość w pikselach określonego elementu w polu kombi. Zwracana wartość to CB_ERR , jeśli wystąpi błąd.

Przykład

// Set the height of every item so the item
// is completely visible.
CString strLBText;
CSize size;
CDC *pDC = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->GetLBText(i, strLBText);
   size = pDC->GetTextExtent(strLBText);

   // Only want to set the item height if the current height
   // is not big enough.
   if (m_pComboBox->GetItemHeight(i) < size.cy)
      m_pComboBox->SetItemHeight(i, size.cy);
}
m_pComboBox->ReleaseDC(pDC);

CComboBox::GetLBText

Pobiera ciąg z pola listy pola kombi.

int GetLBText(
    int nIndex,
    LPTSTR lpszText) const;

void GetLBText(
    int nIndex,
    CString& rString) const;

Parametry

nIndex
Zawiera indeks zerowy ciągu pola listy do skopiowania.

lpszText
Wskazuje bufor, który ma odbierać ciąg. Bufor musi mieć wystarczającą ilość miejsca dla ciągu i znak null zakończenia.

rString
Odwołanie do .CString

Wartość zwracana

Długość ciągu (w bajtach) z wyłączeniem znaku null zakończenia. Jeśli nIndex nie określi prawidłowego indeksu, zwracana wartość to CB_ERR.

Uwagi

Druga forma tej funkcji składowej wypełnia CString obiekt tekstem elementu.
Jeśli nIndex jest nieprawidłowa, ta funkcja zgłasza E_INVALIDARG wyjątek (kod błędu: -2147024809, 0x80070057).

Przykład

// Dump all of the items in the combo box.
CString str1, str2;
int n;
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   n = m_pComboBox->GetLBTextLen(i);
   m_pComboBox->GetLBText(i, str1.GetBuffer(n));
   str1.ReleaseBuffer();

   str2.Format(_T("item %d: %s\r\n"), i, str1.GetBuffer(0));
   AFXDUMP(str2);
}

CComboBox::GetLBTextLen

Pobiera długość ciągu w polu listy pola kombi.

int GetLBTextLen(int nIndex) const;

Parametry

nIndex
Zawiera indeks zerowy ciągu pola listy.

Wartość zwracana

Długość ciągu w bajtach z wyłączeniem znaku null zakończenia. Jeśli nIndex nie określi prawidłowego indeksu, zwracana wartość to CB_ERR.

Przykład

Zobacz przykład dla elementu CComboBox::GetLBText.

CComboBox::GetLocale

Pobiera ustawienia regionalne używane przez pole kombi.

LCID GetLocale() const;

Wartość zwracana

Wartość identyfikatora ustawień regionalnych (LCID) dla ciągów w polu kombi.

Uwagi

Ustawienia regionalne są używane na przykład w celu określenia kolejności sortowania ciągów w posortowanych polach kombi.

Przykład

Zobacz przykład dla elementu CComboBox::SetLocale.

CComboBox::GetMinVisible

Pobiera minimalną liczbę widocznych elementów na liście rozwijanej bieżącej kontrolki pola kombi.

int GetMinVisible() const;

Wartość zwracana

Minimalna liczba widocznych elementów na bieżącej liście rozwijanej.

Uwagi

Ta metoda wysyła CB_GETMINVISIBLE komunikat opisany w zestawie SDK systemu Windows.

CComboBox::GetTopIndex

Pobiera indeks na podstawie zera pierwszego widocznego elementu w części pola listy pola kombi.

int GetTopIndex() const;

Wartość zwracana

Indeks na podstawie zera pierwszego widocznego elementu w części pola listy pola kombi, jeśli się powiedzie, CB_ERR w przeciwnym razie.

Uwagi

Początkowo element 0 znajduje się w górnej części pola listy, ale jeśli pole listy jest przewijane, inny element może znajdować się u góry.

Przykład

// Want an item in the bottom half to be the first visible item.
int nTop = m_pComboBox->GetCount() / 2;
if (m_pComboBox->GetTopIndex() < nTop)
{
   m_pComboBox->SetTopIndex(nTop);
   ASSERT(m_pComboBox->GetTopIndex() == nTop);
}

CComboBox::InitStorage

Przydziela pamięć do przechowywania elementów pól listy w polu listy w polu listy pola kombi.

int InitStorage(
    int nItems,
    UINT nBytes);

Parametry

nItems
Określa liczbę elementów do dodania.

nBytes
Określa ilość pamięci w bajtach, które mają być przydzielane dla ciągów elementów.

Wartość zwracana

Jeśli operacja powiedzie się, maksymalna liczba elementów, które może przechowywać część pola kombi w polu listy, zanim będzie potrzebna reallokacja pamięci, w przeciwnym razie CB_ERRSPACE, co oznacza, że za mało pamięci jest dostępna.

Uwagi

Wywołaj tę funkcję przed dodaniem dużej liczby elementów do części pola listy elementu CComboBox.

Tylko system Windows 95/98: wParam parametr jest ograniczony do wartości 16-bitowych. Oznacza to, że pola listy nie mogą zawierać więcej niż 32 767 elementów. Chociaż liczba elementów jest ograniczona, łączny rozmiar elementów w polu listy jest ograniczony tylko przez dostępną pamięć.

Ta funkcja pomaga przyspieszyć inicjowanie pól listy, które mają dużą liczbę elementów (więcej niż 100). Wstępnie przydziela określoną ilość pamięci, dzięki czemu kolejne AddStringfunkcje , InsertStringi Dir zajmują najkrótszy możliwy czas. Możesz użyć oszacowań dla parametrów. Jeśli przecenisz, zostanie przydzielona pewna dodatkowa pamięć; jeśli nie doceniasz, normalna alokacja jest używana dla elementów, które przekraczają wstępnie przydzieloną kwotę.

Przykład

// Initialize the storage of the combo box to be 256 strings with
// about 10 characters per string, performance improvement.
int nAlloc = pmyComboBox->InitStorage(256, 10);
ASSERT(nAlloc != CB_ERRSPACE);

// Add 256 items to the combo box.
CString strAdd;
for (int i = 0; i < 256; i++)
{
   strAdd.Format(_T("item string %d"), i);
   m_pComboBox->AddString(strAdd);
}

CComboBox::InsertString

Wstawia ciąg do pola listy pola kombi.

int InsertString(
    int nIndex,
    LPCTSTR lpszString);

Parametry

nIndex
Zawiera indeks oparty na zerach do pozycji w polu listy, który otrzyma ciąg. Jeśli ten parametr to -1, ciąg zostanie dodany na końcu listy.

lpszString
Wskazuje ciąg o wartości null, który ma zostać wstawiony.

Wartość zwracana

Indeks zerowy pozycji, w której wstawiono ciąg. Zwracana wartość to CB_ERR , jeśli wystąpi błąd. Wartość zwracana jest CB_ERRSPACE , jeśli za mało miejsca jest dostępne do przechowywania nowego ciągu.

Uwagi

W przeciwieństwie do funkcji InsertString składowej AddString funkcja składowa nie powoduje sortowania listy z CBS_SORT stylem.

Uwaga

Ta funkcja nie jest obsługiwana przez kontrolkę systemu Windows ComboBoxEx . Aby uzyskać więcej informacji na temat tej kontrolki, zobacz ComboBoxEx Kontrolki w zestawie Windows SDK.

Przykład

// Insert items in between existing items.
CString strIns;
int nItems = m_pComboBox->GetCount();
for (int i = 0; i < nItems; i++)
{
   strIns.Format(_T("item string %c"), (char)('A' + i));
   m_pComboBox->InsertString(2 * i, strIns);
}

CComboBox::LimitText

Ogranicza długość w bajtach tekstu, który użytkownik może wprowadzić w kontrolce edycji pola kombi.

BOOL LimitText(int nMaxChars);

Parametry

nMaxChars
Określa długość (w bajtach) tekstu, który użytkownik może wprowadzić. Jeśli ten parametr ma wartość 0, długość tekstu jest ustawiona na 65 535 bajtów.

Wartość zwracana

Jeśli operacja niezerowa się powiedzie. Jeśli zostanie wywołana dla pola kombi ze stylem CBS_DROPDOWNLIST lub polem kombi bez kontrolki edycji, zwracana wartość to CB_ERR.

Uwagi

Jeśli pole kombi nie ma stylu CBS_AUTOHSCROLL, ustawienie limitu tekstu na większy niż rozmiar kontrolki edycji nie będzie miało żadnego wpływu.

LimitText Ogranicza tylko tekst, który użytkownik może wprowadzić. Nie ma wpływu na żaden tekst już w kontrolce edycji po wysłaniu wiadomości ani nie ma wpływu na długość tekstu skopiowanego do kontrolki edycji po wybraniu ciągu w polu listy.

Przykład

// Limit the number of characters in the combo box's edit control to
// be the maximum number visible.

// Get the text metrics for the combo box; needed for the
// average character width.
TEXTMETRIC tm;
CDC *pDCCB = m_pComboBox->GetDC();
pDCCB->GetTextMetrics(&tm);
m_pComboBox->ReleaseDC(pDCCB);

CRect rect;
m_pComboBox->GetClientRect(&rect);

m_pComboBox->LimitText(rect.Width() / tm.tmAveCharWidth);

CComboBox::MeasureItem

Wywoływana przez platformę po utworzeniu pola kombi z stylem rysowania właściciela.

virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);

Parametry

lpMeasureItemStruct
Długi wskaźnik do MEASUREITEMSTRUCT struktury.

Uwagi

Domyślnie ta funkcja składowa nic nie robi. Zastąpij MEASUREITEMSTRUCT tę funkcję składową i wypełnij strukturę, aby poinformować system Windows o wymiarach pola listy w polu kombi. Jeśli pole kombi zostanie utworzone przy użyciu CBS_OWNERDRAWVARIABLE stylu, struktura wywołuje tę funkcję składową dla każdego elementu w polu listy. W przeciwnym razie ten element członkowski jest wywoływany tylko raz.

CBS_OWNERDRAWFIXED Użycie stylu w polu kombi właściciela rysu utworzonego SubclassDlgItem z funkcją CWnd składową obejmuje dalsze zagadnienia programistyczne. Zobacz dyskusję w notatce technicznej 14.

Zobacz CWnd::OnMeasureItem opis MEASUREITEMSTRUCT struktury.

Przykład

// CMyComboBox is my owner-drawn combo box derived from CComboBox. This
// example measures an item and sets the height of the item to twice the
// vertical extent of its text. The combo box control was created with
// the following code:
//   pmyComboBox->Create(
//      WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|
//      CBS_SORT|CBS_OWNERDRAWVARIABLE,
//      myRect, pParentWnd, 1);
//
void CMyComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
   ASSERT(lpMeasureItemStruct->CtlType == ODT_COMBOBOX);

   if (lpMeasureItemStruct->itemID != (UINT)-1)
   {
      LPCTSTR lpszText = (LPCTSTR)lpMeasureItemStruct->itemData;
      ASSERT(lpszText != NULL);
      CSize sz;
      CDC *pDC = GetDC();

      sz = pDC->GetTextExtent(lpszText);

      ReleaseDC(pDC);

      lpMeasureItemStruct->itemHeight = 2 * sz.cy;
   }
}

CComboBox::Paste

Wstawia dane ze Schowka do kontrolki edycji pola kombi na bieżącym położeniu kursora.

void Paste();

Uwagi

Dane są wstawiane tylko wtedy, gdy Schowek zawiera dane w CF_TEXT formacie.

Przykład

// Replace all of the text in the combo box's edit control with the text
// in the clipboard.
m_MyComboBox.SetEditSel(0, -1);
m_MyComboBox.Paste();

CComboBox::ResetContent

Usuwa wszystkie elementy z pola listy i edytuje kontrolkę pola kombi.

void ResetContent();

Przykład

// Delete all the items from the combo box.
m_pComboBox->ResetContent();
ASSERT(m_pComboBox->GetCount() == 0);

CComboBox::SelectString

Wyszukuje ciąg w polu listy pola kombi, a jeśli ciąg zostanie znaleziony, wybierze ciąg w polu listy i skopiuje go do kontrolki edycji.

int SelectString(
    int nStartAfter,
    LPCTSTR lpszString);

Parametry

nStartAfter
Zawiera indeks zerowy elementu przed przeszukanym pierwszym elementem. Gdy wyszukiwanie osiągnie dół pola listy, będzie kontynuowane z góry pola listy z powrotem do elementu określonego przez nStartAfter. Jeśli wartość -1, całe pole listy jest wyszukiwane od początku.

lpszString
Wskazuje ciąg zakończony na wartość null, który zawiera prefiks do wyszukania. Wyszukiwanie jest niezależne od wielkości liter, więc ten ciąg może zawierać dowolną kombinację wielkich i małych liter.

Wartość zwracana

Indeks na podstawie zera wybranego elementu, jeśli został znaleziony ciąg. Jeśli wyszukiwanie nie powiodło się, zwracana wartość to CB_ERR , a bieżące zaznaczenie nie zostanie zmienione.

Uwagi

Ciąg jest wybierany tylko wtedy, gdy jego początkowe znaki (od punktu początkowego) pasują do znaków w ciągu prefiksu.

Należy pamiętać, że SelectString funkcje składowe i FindString znajdują ciąg, ale SelectString funkcja składowa również wybiera ciąg.

Przykład

// The string to match.
LPCTSTR lpszSelect = _T("item");

// Select the item that begins with the specified string.
int nSel = m_pComboBox->SelectString(0, lpszSelect);
ASSERT(nSel != CB_ERR);

CComboBox::SetCueBanner

Ustawia tekst wskazówek wyświetlany dla kontrolki pola kombi.

BOOL SetCueBanner(LPCTSTR lpszText);

Parametry

lpszText
[in] Wskaźnik do buforu zakończonego wartością null, który zawiera tekst wskaźnika.

Wartość zwracana

TRUE jeśli metoda zakończy się powodzeniem; w przeciwnym razie, FALSE.

Uwagi

Tekst cue to monit wyświetlany w obszarze wejściowym kontrolki pola kombi. Tekst cue jest wyświetlany, dopóki użytkownik nie udostępni danych wejściowych.

Ta metoda wysyła CB_SETCUEBANNER komunikat opisany w zestawie SDK systemu Windows.

Przykład

Pierwszy przykład kodu definiuje zmienną , m_comboboxktóra jest używana do programowego uzyskiwania dostępu do kontrolki pola kombi. Ta zmienna jest używana w następnym przykładzie.

// Variable to access the combo box control
CComboBox m_combobox;

W następnym przykładzie kodu ustawiono baner cue dla kontrolki pola kombi.

// Add extra initialization here.

// Add 20 items to the combo box. The Resource Editor
// has already been used to set the style of the combo
// box to CBS_SORT.
CString str;
for (int i = 1; i <= 20; i++)
{
    str.Format(_T("Item %2d"), i);
    m_combobox.AddString(str);
}
// Set the minimum visible item
m_combobox.SetMinVisibleItems(10);
// Set the cue banner
m_combobox.SetCueBanner(_T("Select an item..."));

// End of extra initialization.

CComboBox::SetCurSel

Wybiera ciąg w polu listy pola kombi.

int SetCurSel(int nSelect);

Parametry

nSelect
Określa indeks zerowy ciągu do wybrania. Jeśli wartość -1, wszystkie bieżące zaznaczenie w polu listy zostaną usunięte, a kontrolka edycji zostanie wyczyszczone.

Wartość zwracana

Indeks na podstawie zera elementu wybrany, jeśli komunikat zakończy się pomyślnie. Wartość zwracana jest CB_ERR , jeśli nSelect jest większa niż liczba elementów na liście lub jeśli nSelect jest ustawiona na -1, co spowoduje wyczyszczenie zaznaczenia.

Uwagi

W razie potrzeby pole listy przewija ciąg do widoku (jeśli pole listy jest widoczne). Tekst w kontrolce edycji pola kombi jest zmieniany w celu odzwierciedlenia nowego zaznaczenia. Wszystkie poprzednie wybory w polu listy zostaną usunięte.

Przykład

// Select the last item in the combo box.
int nLast = pmyComboBox->GetCount() - 1;
if (nLast >= 0)
   m_pComboBox->SetCurSel(nLast);

CComboBox::SetDroppedWidth

Wywołaj tę funkcję, aby ustawić minimalną dozwoloną szerokość w pikselach pola listy pola kombi.

int SetDroppedWidth(UINT nWidth);

Parametry

nWidth
Minimalna dozwolona szerokość części pola kombi w pikselach.

Wartość zwracana

Jeśli to się powiedzie, nowa szerokość pola listy, w przeciwnym razie CB_ERR.

Uwagi

Ta funkcja dotyczy tylko pól kombi z stylem CBS_DROPDOWN lub CBS_DROPDOWNLIST .

Domyślnie minimalna dozwolona szerokość pola listy rozwijanej wynosi 0. Gdy zostanie wyświetlona część pola kombi w polu listy, jej szerokość jest większa od minimalnej dozwolonej szerokości lub szerokości pola kombi.

Przykład

// Find the longest string in the combo box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC *pDC = m_pComboBox->GetDC();
CFont *pFont = m_pComboBox->GetFont();

// Select the listbox font, save the old font
CFont *pOldFont = pDC->SelectObject(pFont);
// Get the text metrics for avg char width
pDC->GetTextMetrics(&tm);

for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->GetLBText(i, str);
   sz = pDC->GetTextExtent(str);

   // Add the avg width to prevent clipping
   sz.cx += tm.tmAveCharWidth;

   if (sz.cx > dx)
      dx = sz.cx;
}
// Select the old font back into the DC
pDC->SelectObject(pOldFont);
m_pComboBox->ReleaseDC(pDC);

// Adjust the width for the vertical scroll bar and the left and right border.
dx += ::GetSystemMetrics(SM_CXVSCROLL) + 2 * ::GetSystemMetrics(SM_CXEDGE);

// Set the width of the list box so that every item is completely visible.
m_pComboBox->SetDroppedWidth(dx);

CComboBox::SetEditSel

Wybiera znaki w kontrolce edycji pola kombi.

BOOL SetEditSel(
    int nStartChar,
    int nEndChar);

Parametry

nStartChar
Określa pozycję początkową. Jeśli pozycja początkowa jest ustawiona na -1, wszystkie istniejące opcje zostaną usunięte.

nEndChar
Określa położenie końcowe. Jeśli pozycja końcowa jest ustawiona na -1, zaznaczono cały tekst z pozycji początkowej do ostatniego znaku w kontrolce edycji.

Wartość zwracana

Nonzero, jeśli funkcja składowa zakończyła się pomyślnie; w przeciwnym razie 0. Jest to CB_ERR , jeśli CComboBox ma CBS_DROPDOWNLIST styl lub nie ma pola listy.

Uwagi

Pozycje są oparte na zera. Aby wybrać pierwszy znak kontrolki edycji, należy określić pozycję początkową 0. Pozycja końcowa jest dla znaku tuż po ostatnim znaku do wybrania. Aby na przykład wybrać pierwsze cztery znaki kontrolki edycji, należy użyć pozycji początkowej 0 i pozycji końcowej 4.

Uwaga

Ta funkcja nie jest obsługiwana przez kontrolkę systemu Windows ComboBoxEx . Aby uzyskać więcej informacji na temat tej kontrolki, zobacz ComboBoxEx Kontrolki w zestawie Windows SDK.

Przykład

Zobacz przykład dla elementu CComboBox::GetEditSel.

CComboBox::SetExtendedUI

Wywołaj funkcję składową SetExtendedUI , aby wybrać domyślny interfejs użytkownika lub rozszerzony interfejs użytkownika dla pola kombi zawierającego CBS_DROPDOWN styl lub CBS_DROPDOWNLIST .

int SetExtendedUI(BOOL bExtended = TRUE);

Parametry

bExtended
Określa, czy pole kombi powinno używać rozszerzonego interfejsu użytkownika, czy domyślnego interfejsu użytkownika. Wartość TRUE wybiera rozszerzony interfejs użytkownika; wartość FALSE wybiera standardowy interfejs użytkownika.

Wartość zwracana

CB_OKAY jeśli operacja zakończy się pomyślnie lub CB_ERR wystąpi błąd.

Uwagi

Rozszerzony interfejs użytkownika można zidentyfikować w następujący sposób:

  • Kliknięcie kontrolki statycznej powoduje wyświetlenie pola listy tylko dla pól kombi ze stylem CBS_DROPDOWNLIST .

  • Naciśnięcie klawisza STRZAŁKA W DÓŁ powoduje wyświetlenie pola listy (klawisz F4 jest wyłączony).

Przewijanie w kontrolce statycznej jest wyłączone, gdy lista elementów nie jest widoczna (klawisze strzałek są wyłączone).

Przykład

Zobacz przykład dla elementu CComboBox::GetExtendedUI.

CComboBox::SetHorizontalExtent

Ustawia szerokość w pikselach, za pomocą której część pola listy pola kombi można przewijać w poziomie.

void SetHorizontalExtent(UINT nExtent);

Parametry

nExtent
Określa liczbę pikseli, za pomocą których część pola listy pola kombi można przewijać w poziomie.

Uwagi

Jeśli szerokość pola listy jest mniejsza niż ta wartość, poziomy pasek przewijania będzie przewijać elementy w poziomie w polu listy. Jeśli szerokość pola listy jest równa lub większa od tej wartości, poziomy pasek przewijania jest ukryty lub, jeśli pole kombi ma CBS_DISABLENOSCROLL styl, wyłączone.

Przykład

// Find the longest string in the combo box.
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC *pDC = m_pComboBox->GetDC();
CFont *pFont = m_pComboBox->GetFont();

// Select the listbox font, save the old font
CFont *pOldFont = pDC->SelectObject(pFont);
// Get the text metrics for avg char width
pDC->GetTextMetrics(&tm);

for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->GetLBText(i, str);
   sz = pDC->GetTextExtent(str);

   // Add the avg width to prevent clipping
   sz.cx += tm.tmAveCharWidth;

   if (sz.cx > dx)
      dx = sz.cx;
}
// Select the old font back into the DC
pDC->SelectObject(pOldFont);
m_pComboBox->ReleaseDC(pDC);

// Set the horizontal extent so every character of all strings can
// be scrolled to.
m_pComboBox->SetHorizontalExtent(dx);

CComboBox::SetItemData

Ustawia wartość 32-bitową skojarzona z określonym elementem w polu kombi.

int SetItemData(
    int nIndex,
    DWORD_PTR dwItemData);

Parametry

nIndex
Zawiera indeks oparty na zerach do elementu do ustawienia.

dwItemData
Zawiera nową wartość do skojarzenia z elementem.

Wartość zwracana

CB_ERR jeśli wystąpi błąd.

Uwagi

Użyj funkcji składowej SetItemDataPtr , jeśli element 32-bitowy ma być wskaźnikiem.

Przykład

// Set the data of each item to be equal to its index.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->SetItemData(i, i);
}

CComboBox::SetItemDataPtr

Ustawia wartość 32-bitową skojarzona z określonym elementem w polu kombi jako określony wskaźnik (void*).

int SetItemDataPtr(
    int nIndex,
    void* pData);

Parametry

nIndex
Zawiera indeks oparty na zerach do elementu.

pData
Zawiera wskaźnik do skojarzenia z elementem.

Wartość zwracana

CB_ERR jeśli wystąpi błąd.

Uwagi

Ten wskaźnik pozostaje prawidłowy dla okresu życia pola kombi, mimo że względna pozycja elementu w polu kombi może ulec zmianie w miarę dodawania lub usuwania elementów. W związku z tym indeks elementu w polu może ulec zmianie, ale wskaźnik pozostaje niezawodny.

Przykład

// Set the data pointer of each item to be NULL.
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->SetItemDataPtr(i, NULL);
}

CComboBox::SetItemHeight

Wywołaj SetItemHeight funkcję składową, aby ustawić wysokość elementów listy w polu kombi lub wysokość części kontrolki edycji (lub tekstu statycznego) pola kombi.

int SetItemHeight(
    int nIndex,
    UINT cyItemHeight);

Parametry

nIndex
Określa, czy wysokość elementów listy, czy wysokość części kontrolki edycji (lub tekstu statycznego) pola kombi jest ustawiona.

Jeśli pole kombi ma CBS_OWNERDRAWVARIABLE styl, określa indeks zerowy elementu listy, nIndex którego wysokość ma być ustawiona; w przeciwnym razie musi być równa 0, nIndex a wysokość wszystkich elementów listy zostanie ustawiona.

Jeśli nIndex wartość to -1, należy ustawić wysokość części kontrolki edycji lub tekstu statycznego pola kombi.

cyItemHeight
Określa wysokość składnika pola kombi identyfikowanego przez nIndexelement w pikselach.

Wartość zwracana

CB_ERR jeśli indeks lub wysokość są nieprawidłowe; w przeciwnym razie 0.

Uwagi

Wysokość części kontrolki edycji (lub tekstu statycznego) pola kombi jest ustawiana niezależnie od wysokości elementów listy. Aplikacja musi upewnić się, że wysokość części kontrolki edycji (lub tekstu statycznego) nie jest mniejsza niż wysokość określonego elementu pola listy.

Przykład

// Set the height of every item to be the
// vertical size of the item's text extent.
CString str;
CSize sz;
CDC *pDC = m_pComboBox->GetDC();
for (int i = 0; i < m_pComboBox->GetCount(); i++)
{
   m_pComboBox->GetLBText(i, str);
   sz = pDC->GetTextExtent(str);

   m_pComboBox->SetItemHeight(i, sz.cy);
}
m_pComboBox->ReleaseDC(pDC);

CComboBox::SetLocale

Ustawia identyfikator ustawień regionalnych dla tego pola kombi.

LCID SetLocale(LCID nNewLocale);

Parametry

nNewLocale
Nowa wartość identyfikatora ustawień regionalnych (LCID) ustawiona dla pola kombi.

Wartość zwracana

Poprzednia wartość identyfikatora ustawień regionalnych (LCID) dla tego pola kombi.

Uwagi

Jeśli SetLocale nie jest wywoływana, domyślne ustawienia regionalne są uzyskiwane z systemu. Domyślne ustawienia regionalne systemu można modyfikować przy użyciu aplikacji regionalnej (lub międzynarodowej) Panel sterowania.

Przykład

// My LCID to use.
LCID mylcid = MAKELCID(MAKELANGID(LANG_SPANISH, SUBLANG_SPANISH_MEXICAN),
                       SORT_DEFAULT);

// Force the list box to use my locale.
m_pComboBox->SetLocale(mylcid);
ASSERT(m_pComboBox->GetLocale() == mylcid);

CComboBox::SetMinVisibleItems

Ustawia minimalną liczbę widocznych elementów na liście rozwijanej bieżącego formantu pola kombi.

BOOL SetMinVisibleItems(int iMinVisible);

Parametry

iMinVisible
[in] Określa minimalną liczbę widocznych elementów.

Wartość zwracana

TRUE jeśli ta metoda zakończy się pomyślnie; w przeciwnym razie, FALSE.

Uwagi

Ta metoda wysyła CB_SETMINVISIBLE komunikat opisany w zestawie SDK systemu Windows.

Przykład

Pierwszy przykład kodu definiuje zmienną , m_comboboxktóra jest używana do programowego uzyskiwania dostępu do kontrolki pola kombi. Ta zmienna jest używana w następnym przykładzie.

// Variable to access the combo box control
CComboBox m_combobox;

Następny przykład kodu wstawia 20 elementów do listy rozwijanej kontrolki pola kombi. Następnie określa, że co najmniej 10 elementów będzie wyświetlanych, gdy użytkownik naciska strzałkę listy rozwijanej.

// Add extra initialization here.

// Add 20 items to the combo box. The Resource Editor
// has already been used to set the style of the combo
// box to CBS_SORT.
CString str;
for (int i = 1; i <= 20; i++)
{
    str.Format(_T("Item %2d"), i);
    m_combobox.AddString(str);
}
// Set the minimum visible item
m_combobox.SetMinVisibleItems(10);
// Set the cue banner
m_combobox.SetCueBanner(_T("Select an item..."));

// End of extra initialization.

CComboBox::SetTopIndex

Gwarantuje, że określony element jest widoczny w części pola listy pola kombi.

int SetTopIndex(int nIndex);

Parametry

nIndex
Określa indeks zerowy elementu pola listy.

Wartość zwracana

Zero w przypadku powodzenia lub CB_ERR wystąpienia błędu.

Uwagi

System przewija pole listy do momentu wyświetlenia elementu określonego przez nIndex w górnej części pola listy lub osiągnięcia maksymalnego zakresu przewijania.

Przykład

// Set the first visible item in the combo box to be the middle item
m_pComboBox->SetTopIndex(m_pComboBox->GetCount() / 2);

CComboBox::ShowDropDown

Wyświetla lub ukrywa pole listy pola kombi, które ma CBS_DROPDOWN styl lub CBS_DROPDOWNLIST .

void ShowDropDown(BOOL bShowIt = TRUE);

Parametry

bShowIt
Określa, czy pole listy rozwijanej ma być wyświetlane, czy ukryte. Wartość TRUE pola listy. Wartość ukrywa FALSE pole listy.

Uwagi

Domyślnie pole kombi tego stylu spowoduje wyświetlenie pola listy.

Ta funkcja składowa nie ma wpływu na pole kombi utworzone przy użyciu CBS_SIMPLE stylu.

Przykład

Zobacz przykład dla elementu CComboBox::GetDroppedState.

Zobacz też

Przykładowe klawisze CTRLBARS MFC
CWnd Klasa
Wykres hierarchii
CWnd Klasa
CButton Klasa
CEdit Klasa
CListBox Klasa
CScrollBar Klasa
CStatic Klasa
CDialog Klasa