MFC - 組合框



一個組合框由一個列表框和一個靜態控制元件或編輯控制元件組合而成。它由CComboBox類表示。控制元件的列表框部分可以始終顯示,也可以只在使用者選擇控制元件旁邊的下拉箭頭時下拉顯示。

以下是組合框控制元件的訊息對映列表:

訊息 對映項 描述
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 - 拖動一個組合框並移除靜態文字控制元件的標題。

Remove Caption of Static Text

步驟 2 - 為組合框新增控制元件變數 m_comboBoxCtrl,為靜態文字控制元件新增值變數 m_strTextCtrl。

步驟 3 - 為組合框的選擇更改新增事件處理程式。

Combobox

步驟 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 - 當編譯並執行上述程式碼時,您將看到以下輸出。

Combobox Output

步驟 7 - 當您選擇任何專案時,它將顯示在文字控制元件上。

mfc_windows_controls.htm
廣告