Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Udostępnia funkcje pola kombi systemu Windows.
Syntax
class CComboBox : public CWnd
Members
Public Constructors
| Name | Description |
|---|---|
CComboBox::CComboBox |
CComboBox Tworzy obiekt. |
Public Methods
| Name | Description |
|---|---|
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 . |
Remarks
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.
| Style | Gdy pole listy jest widoczne | Kontrolka statyczna lub edytowana |
|---|---|---|
| Simple | Always | Edit |
| Drop-down | Po usunięciu | Edit |
| 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 maCBS_SIMPLEstyl.ON_CBN_DBLCLKUżytkownik klika dwukrotnie ciąg w polu listy pola kombi. Ten komunikat powiadomienia jest wysyłany tylko dla pola kombi ze stylemCBS_SIMPLE. W przypadku pola kombi zCBS_DROPDOWNstylem lubCBS_DROPDOWNLISTnie można kliknąć dwukrotnie, ponieważ pojedyncze kliknięcie powoduje ukrycie pola listy.ON_CBN_DROPDOWNPole listy pola kombi ma zostać wyświetlone (być widoczne). Ten komunikat powiadomienia może wystąpić tylko dla pola kombi z stylemCBS_DROPDOWNlubCBS_DROPDOWNLIST.ON_CBN_EDITCHANGEUżytkownik podjął akcję, która mogła zmienić tekst w części kontrolki edycji pola kombi. W przeciwieństwie do komunikatuCBN_EDITUPDATEta wiadomość jest wysyłana po zaktualizowaniu ekranu przez system Windows. Nie jest wysyłany, jeśli pole kombi maCBS_DROPDOWNLISTstyl.ON_CBN_EDITUPDATECzęść 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 maCBS_DROPDOWNLISTstyl.ON_CBN_ERRSPACEPole 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 komunikatemCBN_CLOSEUPpowiadomienia, aby wskazać, że wybór użytkownika powinien zostać zignorowany. WiadomośćCBN_SELENDCANCELlub powiadomienie jest wysyłana nawet wtedy, gdyCBN_SELENDOKwiadomość z powiadomieniem nie jest wysyłana (tak jak w przypadku pola kombi ze stylemCBN_CLOSEUP).CBS_SIMPLEON_CBN_SELENDOKUżytkownik wybiera element, a następnie naciska ENTER lub klika STRZAŁKA W DÓŁ, aby ukryć pole listy pola kombi. Ta wiadomość powiadomienia jest wysyłana przed komunikatemCBN_CLOSEUP, aby wskazać, że wybór użytkownika powinien być uznawany za prawidłowy. WiadomośćCBN_SELENDCANCELlub powiadomienie jest wysyłana nawet wtedy, gdyCBN_SELENDOKwiadomość z powiadomieniem nie jest wysyłana (tak jak w przypadku pola kombi ze stylemCBN_CLOSEUP).CBS_SIMPLEON_CBN_KILLFOCUSPole kombi traci fokus wejściowy.ON_CBN_SELCHANGEWybór w polu listy pola kombi zostanie zmieniony w wyniku kliknięcia użytkownika w polu listy lub zmiany zaznaczenia przy użyciu strzałek. Podczas przetwarzania tego komunikatu tekst w kontrolce edycji pola kombi można pobrać tylko za pośrednictwemGetLBTextlub innej podobnej funkcji.GetWindowTextnie można użyć.ON_CBN_SETFOCUSPole 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. Aby uzyskać więcej informacji, zobacz CWnd::SubclassWindow.
Inheritance Hierarchy
CComboBox
Requirements
Header:afxwin.h
CComboBox::AddString
Dodaje ciąg do pola listy pola kombi.
int AddString(LPCTSTR lpszString);
Parameters
lpszString
Wskazuje ciąg zakończony na wartość null, który ma zostać dodany.
Return Value
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.
Remarks
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.
Note
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 .
Example
// 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();
Example
// 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();
Remarks
Aby usunąć bieżące zaznaczenie i umieścić usuniętą zawartość w Schowku, użyj funkcji składowej Cut .
Example
// 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);
Parameters
lpCompareItemStruct
Długi wskaźnik do COMPAREITEMSTRUCT struktury.
Return Value
Wskazuje względną pozycję dwóch elementów opisanych w COMPAREITEMSTRUCT strukturze. Może to być dowolna z następujących wartości:
| Value | Meaning |
|---|---|
| - 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.
Remarks
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.
Example
// 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();
Example
// 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);
Parameters
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.
Return Value
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Remarks
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_CHILDZawszeWS_VISIBLEZwykleWS_DISABLEDRzadkoWS_VSCROLLAby dodać pionowe przewijanie pola listy w polu kombiWS_HSCROLLAby dodać poziome przewijanie pola listy w polu kombiWS_GROUPAby grupować kontrolkiWS_TABSTOPAby uwzględnić pole kombi w kolejności tabulacji
Example
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();
Remarks
Aby usunąć bieżące zaznaczenie bez umieszczania usuniętego tekstu w Schowku, wywołaj funkcję składową Clear .
Example
// 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);
Parameters
lpDeleteItemStruct
Długi wskaźnik struktury systemu Windows DELETEITEMSTRUCT zawierający informacje o usuniętym elemencie. Zobacz CWnd::OnDeleteItem opis tej struktury.
Remarks
Domyślna implementacja tej funkcji nic nie robi. Zastąpi tę funkcję, aby ponownie wyrysować pole kombi zgodnie z potrzebami.
Example
// 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);
Parameters
nIndex
Określa indeks do ciągu, który ma zostać usunięty.
Return Value
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.
Remarks
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.
Example
// 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);
Parameters
attr
Może być dowolną kombinacją enum wartości opisanych w CFile::GetStatus pliku lub dowolnej kombinacji następujących wartości:
DDL_READWRITEPlik może być odczytywany lub zapisywany.DDL_READONLYPlik można odczytać, ale nie zapisywać.DDL_HIDDENPlik jest ukryty i nie jest wyświetlany na liście katalogów.DDL_SYSTEMPlik jest plikiem systemowym.DDL_DIRECTORYNazwa określona przezlpszWildCardokreśla katalog.DDL_ARCHIVEPlik został zarchiwizowany.DDL_DRIVESUwzględnij wszystkie dyski zgodne z nazwą określoną przezlpszWildCard.DDL_EXCLUSIVEFlaga 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 *.*).
Return Value
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.
Remarks
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.
Example
// 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);
Parameters
lpDrawItemStruct
Wskaźnik do DRAWITEMSTRUCT struktury zawierającej informacje o wymaganym typie rysunku.
Remarks
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.
Example
// 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;
Parameters
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.
Return Value
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ę.
Remarks
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.
Example
// 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;
Parameters
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.
Return Value
Indeks oparty na zerze pasującego elementu lub CB_ERR jeśli wyszukiwanie nie powiodło się.
Remarks
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.
Example
// 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;
Parameters
pcbi
Wskaźnik do COMBOBOXINFO struktury.
Return Value
Zwraca powodzenie TRUE po FALSE niepowodzeniu.
Remarks
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;
Return Value
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.
Example
// 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;
Parameters
lpszText
[out] Wskaźnik do buforu, który odbiera tekst baneru cue.
cchText
[in] Rozmiar buforu wskazywanego przez lpszText parametr .
Return Value
W pierwszym przeciążeniu obiekt zawierający tekst baneru cue, CString jeśli istnieje; CString w przeciwnym razie obiekt o zerowej długości.
-or-
W drugim przeciążeniu, TRUE jeśli ta metoda zakończy się pomyślnie; w przeciwnym razie FALSE.
Remarks
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;
Return Value
Indeks zerowy aktualnie wybranego elementu w polu listy pola kombi lub CB_ERR jeśli nie wybrano żadnego elementu.
Remarks
GetCurSel zwraca indeks do listy.
Example
// 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;
Parameters
lprect
Wskazuje strukturę RECT, która ma odbierać współrzędne.
Example
// 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;
Return Value
Nonzero, jeśli pole listy jest widoczne; w przeciwnym razie 0.
Example
// 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;
Return Value
W przypadku powodzenia minimalna dozwolona szerokość w pikselach; w przeciwnym razie, CB_ERR.
Remarks
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.
Example
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;
Return Value
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.
Example
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;
Return Value
Niezerowe, jeśli pole kombi ma rozszerzony interfejs użytkownika; w przeciwnym razie 0.
Remarks
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 STRZAŁKA W DÓŁ powoduje wyświetlenie pola listy (F4 jest wyłączony).
Przewijanie w kontrolce statycznej jest wyłączone, gdy lista elementów nie jest widoczna (strzałek są wyłączone).
Example
// 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;
Return Value
Przewijana szerokość części pola kombi w pikselach.
Remarks
Ma to zastosowanie tylko wtedy, gdy część pola listy pola kombi ma poziomy pasek przewijania.
Example
// 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;
Parameters
nIndex
Zawiera indeks zerowy elementu w polu listy pola kombi.
Return Value
Wartość 32-bitowa skojarzona z elementem lub CB_ERR jeśli wystąpi błąd.
Remarks
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*).
Example
// 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;
Parameters
nIndex
Zawiera indeks zerowy elementu w polu listy pola kombi.
Return Value
Pobiera wskaźnik lub -1, jeśli wystąpi błąd.
Example
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;
Parameters
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.
Return Value
Wysokość w pikselach określonego elementu w polu kombi. Zwracana wartość to CB_ERR , jeśli wystąpi błąd.
Example
// 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;
Parameters
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
Return Value
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.
Remarks
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).
Example
// 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;
Parameters
nIndex
Zawiera indeks zerowy ciągu pola listy.
Return Value
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.
Example
Zobacz przykład dla elementu CComboBox::GetLBText.
CComboBox::GetLocale
Pobiera ustawienia regionalne używane przez pole kombi.
LCID GetLocale() const;
Return Value
Wartość identyfikatora ustawień regionalnych (LCID) dla ciągów w polu kombi.
Remarks
Ustawienia regionalne są używane na przykład w celu określenia kolejności sortowania ciągów w posortowanych polach kombi.
Example
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;
Return Value
Minimalna liczba widocznych elementów na bieżącej liście rozwijanej.
Remarks
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;
Return Value
Indeks na podstawie zera pierwszego widocznego elementu w części pola listy pola kombi, jeśli się powiedzie, CB_ERR w przeciwnym razie.
Remarks
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.
Example
// 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);
Parameters
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.
Return Value
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.
Remarks
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ę.
Example
// 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);
Parameters
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.
Return Value
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.
Remarks
W przeciwieństwie do funkcji AddString składowej InsertString funkcja składowa nie powoduje sortowania listy z CBS_SORT stylem.
Note
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.
Example
// 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);
Parameters
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.
Return Value
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.
Remarks
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.
Example
// 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);
Parameters
lpMeasureItemStruct
Długi wskaźnik do MEASUREITEMSTRUCT struktury.
Remarks
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.
Example
// 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();
Remarks
Dane są wstawiane tylko wtedy, gdy Schowek zawiera dane w CF_TEXT formacie.
Example
// 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();
Example
// 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);
Parameters
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.
Return Value
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.
Remarks
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.
Example
// 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);
Parameters
lpszText
[in] Wskaźnik do buforu zakończonego wartością null, który zawiera tekst wskaźnika.
Return Value
TRUE jeśli metoda zakończy się powodzeniem; w przeciwnym razie, FALSE.
Remarks
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.
Example
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);
Parameters
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.
Return Value
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.
Remarks
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.
Example
// 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);
Parameters
nWidth
Minimalna dozwolona szerokość części pola kombi w pikselach.
Return Value
Jeśli to się powiedzie, nowa szerokość pola listy, w przeciwnym razie CB_ERR.
Remarks
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.
Example
// 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);
Parameters
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.
Return Value
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.
Remarks
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.
Note
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.
Example
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);
Parameters
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.
Return Value
CB_OKAY jeśli operacja zakończy się pomyślnie lub CB_ERR wystąpi błąd.
Remarks
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 STRZAŁKA W DÓŁ powoduje wyświetlenie pola listy (F4 jest wyłączony).
Przewijanie w kontrolce statycznej jest wyłączone, gdy lista elementów nie jest widoczna (strzałek są wyłączone).
Example
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);
Parameters
nExtent
Określa liczbę pikseli, za pomocą których część pola listy pola kombi można przewijać w poziomie.
Remarks
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.
Example
// 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);
Parameters
nIndex
Zawiera indeks oparty na zerach do elementu do ustawienia.
dwItemData
Zawiera nową wartość do skojarzenia z elementem.
Return Value
CB_ERR jeśli wystąpi błąd.
Remarks
Użyj funkcji składowej SetItemDataPtr , jeśli element 32-bitowy ma być wskaźnikiem.
Example
// 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);
Parameters
nIndex
Zawiera indeks oparty na zerach do elementu.
pData
Zawiera wskaźnik do skojarzenia z elementem.
Return Value
CB_ERR jeśli wystąpi błąd.
Remarks
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.
Example
// 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);
Parameters
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.
Return Value
CB_ERR jeśli indeks lub wysokość są nieprawidłowe; w przeciwnym razie 0.
Remarks
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.
Example
// 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);
Parameters
nNewLocale
Nowa wartość identyfikatora ustawień regionalnych (LCID) ustawiona dla pola kombi.
Return Value
Poprzednia wartość identyfikatora ustawień regionalnych (LCID) dla tego pola kombi.
Remarks
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.
Example
// 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);
Parameters
iMinVisible
[in] Określa minimalną liczbę widocznych elementów.
Return Value
TRUE jeśli ta metoda zakończy się pomyślnie; w przeciwnym razie, FALSE.
Remarks
Ta metoda wysyła CB_SETMINVISIBLE komunikat opisany w zestawie SDK systemu Windows.
Example
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);
Parameters
nIndex
Określa indeks zerowy elementu pola listy.
Return Value
Zero w przypadku powodzenia lub CB_ERR wystąpienia błędu.
Remarks
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.
Example
// 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);
Parameters
bShowIt
Określa, czy pole listy rozwijanej ma być wyświetlane, czy ukryte. Wartość TRUE pola listy. Wartość ukrywa FALSE pole listy.
Remarks
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.
Example
Zobacz przykład dla elementu CComboBox::GetDroppedState.
See also
Przykładowe CTRLBARS MFC
CWnd Klasa
Hierarchy Chart
CWnd Klasa
CButton Klasa
CEdit Klasa
CListBox Klasa
CScrollBar Klasa
CStatic Klasa
CDialog Klasa