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
广告