MFC - 組合框
一個組合框由一個列表框和一個靜態控制元件或編輯控制元件組合而成。它由CComboBox類表示。控制元件的列表框部分可以始終顯示,也可以只在使用者選擇控制元件旁邊的下拉箭頭時下拉顯示。
| 序號 |
名稱和描述 |
| 1 |
AddString 將字串新增到組合框列表框列表的末尾,或者對於具有CBS_SORT樣式的列表框,新增到排序位置。 |
| 2 |
Clear 刪除(清除)編輯控制元件中的當前選擇(如有)。 |
| 3 |
CompareItem 框架呼叫此方法以確定排序的自繪組合框中新列表項的相對位置。 |
| 4 |
Copy 將當前選擇(如有)複製到剪貼簿的CF_TEXT格式。 |
| 5 |
Create 建立組合框並將其附加到 CComboBox 物件。 |
| 6 |
Cut 刪除(剪下)編輯控制元件中的當前選擇(如有),並將已刪除的文字複製到 CF_TEXT 格式的剪貼簿。 |
| 7 |
DeleteItem 當從自繪組合框中刪除列表項時,框架呼叫此方法。 |
| 8 |
DeleteString 從組合框的列表框中刪除字串。 |
| 9 |
Dir 將檔名列表新增到組合框的列表框中。 |
| 10 |
DrawItem 當自繪組合框的可視外觀發生變化時,框架呼叫此方法。 |
| 11 |
FindString 查詢組合框列表框中包含指定字首的第一個字串。 |
| 12 |
FindStringExact 查詢與指定字串完全匹配的組合框中的第一個列表框字串。 |
| 13 |
GetComboBoxInfo 檢索有關 CComboBox 物件的資訊。 |
| 14 |
GetCount 檢索組合框列表框中的專案數。 |
| 15 |
GetCueBanner 獲取為組合框控制元件顯示的提示文字。 |
| 16 |
GetCurSel 檢索組合框列表框中當前選定項(如有)的索引。 |
| 17 |
GetDroppedControlRect 檢索下拉組合框的可視(下拉)列表框的螢幕座標。 |
| 18 |
GetDroppedState 確定下拉組合框的列表框是否可見(已下拉)。 |
| 19 |
GetDroppedWidth 檢索組合框下拉列表框部分的最小允許寬度。 |
| 20 |
GetEditSel 獲取組合框編輯控制元件中當前選擇的起始和結束字元位置。 |
| 21 |
GetExtendedUI 確定組合框是否具有預設使用者介面或擴充套件使用者介面 |
| 22 |
GetHorizontalExtent 返回組合框列表框部分可以水平滾動的寬度(以畫素為單位)。 |
| 23 |
GetItemData 檢索與指定組合框項關聯的應用程式提供的 32 位值。 |
| 24 |
GetItemDataPtr 檢索與指定組合框項關聯的應用程式提供的 32 位指標。 |
| 25 |
GetItemHeight 檢索組合框中列表項的高度。 |
| 26 |
GetLBText 從組合框的列表框中獲取字串。 |
| 27 |
GetLBTextLen 獲取組合框列表框中字串的長度。 |
| 28 |
GetLocale 檢索組合框的區域設定識別符號。 |
| 29 |
GetMinVisible 獲取當前組合框下拉列表中可見項的最小數量。 |
| 30 |
GetTopIndex 返回組合框列表框部分中第一個可見項的索引。 |
| 31 |
InitStorage 為組合框列表框部分中的專案和字串預分配記憶體塊。 |
| 32 |
InsertString 將字串插入組合框的列表框中。 |
| 33 |
LimitText 限制使用者可以輸入到組合框編輯控制元件中的文字長度。 |
| 34 |
MeasureItem 建立自繪組合框時,框架呼叫此方法來確定組合框的尺寸。 |
| 35 |
Paste 將剪貼簿中的資料插入到編輯控制元件的當前游標位置。僅當剪貼簿包含 CF_TEXT 格式的資料時,才會插入資料。 |
| 36 |
ResetContent 從組合框的列表框和編輯控制元件中刪除所有專案。 |
| 37 |
SelectString 在組合框的列表框中搜索字串,如果找到該字串,則在列表框中選擇該字串並將該字串複製到編輯控制元件。 |
| 38 |
SetCueBanner 設定組合框控制元件顯示的提示文字。 |
| 39 |
SetCurSel 在組合框的列表框中選擇一個字串。 |
| 40 |
SetDroppedWidth 設定組合框下拉列表框部分的最小允許寬度。 |
| 41 |
SetEditSel 在組合框的編輯控制元件中選擇字元。 |
| 42 |
SetExtendedUI 為具有CBS_DROPDOWN或CBS_DROPDOWNLIST樣式的組合框選擇預設使用者介面或擴充套件使用者介面。 |
| 43 |
SetHorizontalExtent 設定組合框列表框部分可以水平滾動的寬度(以畫素為單位)。 |
| 44 |
SetItemData 設定與組合框中指定的項關聯的 32 位值。 |
| 45 |
SetItemDataPtr 設定與組合框中指定的項關聯的 32 位指標。 |
| 46 |
SetItemHeight 設定組合框中列表項的高度或組合框編輯控制元件(或靜態文字)部分的高度。 |
| 47 |
SetLocale 設定組合框的區域設定識別符號。 |
| 48 |
SetMinVisibleItems 設定當前組合框下拉列表中可見項的最小數量。 |
| 49 |
SetTopIndex 告訴組合框的列表框部分在頂部顯示具有指定索引的項。 |
| 50 |
ShowDropDown 顯示或隱藏具有 CBS_DROPDOWN 或 CBS_DROPDOWNLIST 樣式的組合框的列表框。 |
以下是組合框控制元件的訊息對映列表:
| 訊息 |
對映項 |
描述 |
| CBN_DBLCLK |
ON_CBN_DBLCLK( <id>, <memberFxn> ) |
使用者雙擊組合框列表框中的字串。 |
| CBN_DROPDOWN |
ON_CBN_DROPDOWN( <id>, <memberFxn> ) |
組合框的列表框即將下拉(變得可見)。 |
| CBN_EDITCHANGE |
ON_CBN_EDITCHANGE( <id>, <memberFxn> ) |
使用者執行了可能已更改組合框編輯控制元件部分文字的操作。 |
| CBN_EDITUPDATE |
ON_CBN_EDITUPDATE( <id>, <memberFxn> ) |
組合框的編輯控制元件部分即將顯示已更改的文字。 |
| CBN_KILLFOCUS |
ON_CBN_KILLFOCUS( <id>, <memberFxn> ) |
組合框即將失去輸入焦點。 |
| CBN_SELCHANGE |
ON_CBN_SELCHANGE( <id>, <memberFxn> ) |
組合框列表框中的選擇即將因使用者單擊列表框或使用箭頭鍵更改選擇而更改。 |
| CBN_SETFOCUS |
ON_CBN_SETFOCUS( <id>, <memberFxn> ) |
組合框接收輸入焦點。 |
讓我們透過建立一個新的基於 MFC 對話方塊的應用程式來了解單選按鈕的示例。
步驟 1 - 拖動一個組合框並移除靜態文字控制元件的標題。
步驟 2 - 為組合框新增控制元件變數 m_comboBoxCtrl,為靜態文字控制元件新增值變數 m_strTextCtrl。
步驟 3 - 為組合框的選擇更改新增事件處理程式。
步驟 4 - 在 OnInitDialog() 中新增以下程式碼以載入組合框。
for (int i = 0; i<10; i++) {
str.Format(_T("Item %d"), i);
m_comboBoxCtrl.AddString(str);
}
步驟 5 - 以下是事件處理程式的實現。
void CMFCComboBoxDlg::OnCbnSelchangeCombo1() {
// TODO: Add your control notification handler code here
m_comboBoxCtrl.GetLBText(m_comboBoxCtrl.GetCurSel(), m_strTextCtrl);
UpdateData(FALSE);
}
步驟 6 - 當編譯並執行上述程式碼時,您將看到以下輸出。
步驟 7 - 當您選擇任何專案時,它將顯示在文字控制元件上。
mfc_windows_controls.htm