MFC - 组合框

组合框由与静态控件或编辑控件组合的列表框组成。 它由 CComboBox 类表示。 控件的列表框部分可以一直显示,或者仅当用户选择控件旁边的下拉箭头时才下拉。

这是组合框控件映射的消息列表 −

消息 映射条目 描述
CBN_DBLCLK ON_CBN_DBLCLK( <id>, <memberFxn> ) 用户双击组合框列表框中的字符串。
CBN_DROPDOWN ON_CBN_DROPDOWN( <id>, <memberFxn> ) 组合框的列表框即将下拉(变得可见)。
CBN_EDITCHANGE ON_CBN_EDITCHANGE( <id>, <memberFxn> ) 用户执行的操作可能会更改组合框的 editcontrol 部分中的文本。
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.html