天天看點

MFC之下拉清單 ComboBox

目标:寫可選擇序列槽号 COM1 COM2~~

1.添加變量,control型,變量名:m_com,在程式中添加程式代碼“m_com.AddString(_T("COM1")); m_com.AddString(_T("COM2"));” 點選下三角,不僅沒有COM1,COM2依次出現,反而是空白!!!怎麼解決?

解決辦法是:在BOOL CifekDlg::OnInitDialog()下直接添加代碼m_com.AddString(_T("COM1")); m_com.AddString(_T("COM2"));

2.注釋一下ComboBox,它是一種組合框,點選後出現清單,一個編輯框加一個清單框,這次使用的是下拉組合框,而非下拉式清單框,雖然兩者都十分常見

3.CComboBox類,函數:

int GetCount() const;  擷取組合框控件的清單框中清單項的數量

int GetCurSel() const; 擷取組合框控件的清單框中選中項的索引,若沒選中任何項,傳回CB_ERR。

int SetCurSel(int nSel(int nSelect);在組合框控件的清單框中選擇某項。nSelect參數指定了要選擇的清單項的索引,如果為-1則清單框中目前選擇項被取消選中,編輯框也被清空。

       DWORD GetEditSel( ) const;

       擷取組合框控件的編輯框中目前選擇範圍的起始和終止字元的位置。該函數傳回一個32位數,低16位存放起始位置,高16位存放選擇範圍後第一個非選擇字元的位置。如果該函數用于下拉清單式組合框時,會傳回CB_ERR。

       BOOL SetEditSel(int nStartChar,int nEndChar);

       用于在組合框控件的編輯框中選擇字元。nStartChar參數指定起始位置,nEndChar參數指定終止位置。

       DWORD_PTR GetItemData(int nIndex) const;

       擷取組合框中指定項所關聯的32位資料。nIndex參數指定組合框控件的清單框某項的索引(從0開始)。

       int SetItemData(int nIndex,DWORD_PTR dwItemData);

       為某個指定的組合框清單項設定一個關聯的32位數。nIndex參數指定要進行設定的清單項索引。dwItemData參數指定要關聯的新值。

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

       從組合框控件的清單框中擷取某項的字元串。nIndex參數指定要擷取字元串的清單項的索引,CString參數用于接收取到的字元串。

       int GetLBTextLen(int nIndex) const;

       擷取組合框控件的清單框中某項的字元串長度。nIndex參數指定要擷取字元串長度的清單項的索引。  

       int GetTopIndex( ) const;

       擷取組合框控件的清單框中第一個可見項的索引。

       int SetTopIndex(int nIndex);

       将組合框控件的清單框中某個指定項設定為可見的。nIndex參數指定了該清單項的索引。該函數成功則傳回0,有錯誤發生則傳回CB_ERR。

       BOOL LimitText(int nMaxChars);

       用于限制使用者在組合框控件的編輯框中能夠輸入的最大位元組長度。nMaxChars參數指定了使用者能夠輸入文字的最大位元組長度,如果為0則長度被限制為65535個位元組。

       int AddString(LPCTSTR lpszString);

       為組合框控件中的清單框添加新的清單項。lpszString參數是指向要添加的字元串的指針。該函數的傳回值如果大于等于0,那麼它就是新清單項的索引,而如果有錯誤發生則會傳回CB_ERR,如果沒有足夠的記憶體存放新字元串則傳回CB_ERRSPACE。

       int DeleteString(UINT nIndex);

       删除組合框中某指定位置的清單項。nIndex參數指定了要删除的清單項的索引。該函數的傳回值如果大于等于0,那麼它就是組合框中剩餘清單項的數量。如果nIndex指定的索引超出了清單項的數量則傳回CB_ERR。

       int FindString(int nStartAfter,LPCTSTR lpszString) const;

       在組合框控件的清單框中查找但不選中第一個包含指定字首的清單項。nStartAfter參數指定了第一個要查找的清單項之前的那個清單項的索引。lpszString指向包含要查找的字首的字元串。該函數的傳回值如果大于等于0,那麼它是比對清單項的索引,如果查找失敗則傳回CB_ERR。

       int InsertString(int nIndex,LPCTSTR lpszString);

       向組合框控件的清單框中插入一個清單項。nIndex參數指定了要插入清單項的位置,lpszString參數則指定了要插入的字元串。該函數傳回字元串被插入的位置,如果有錯誤發生則會傳回CB_ERR,如果沒有足夠的記憶體存放新字元串則傳回CB_ERRSPACE。

       int SelectString(int nStartAfter,LPCTSTR lpszString);

       在組合框控件的清單框中查找一個字元串,如果查找到則選中它,并将其顯示到編輯框中。參數同FindString。如果字元串被查找到則傳回此清單項的索引,如果查找失敗則傳回CB_ERR,并且目前選擇項不改變。