MFC - 列表框



一个列表框显示项目列表,例如用户可以查看和选择的文件名。列表框由CListBox 类表示。在单选列表框中,用户只能选择一个项目。在多选列表框中,可以选择一系列项目。当用户选择一个项目时,它会被高亮显示,并且列表框会向父窗口发送通知消息。

以下是列表框的一些映射条目 -

消息 映射条目 描述
LBN_DBLCLK ON_LBN_DBLCLK( <id>, <memberFxn> ) 当双击列表项时,框架会调用此成员函数。
LBN_KILLFOCUS ON_LBN_KILLFOCUS( <id>, <memberFxn> ) 在失去输入焦点之前,框架会立即调用此成员函数。
LBN_SELCHANGE ON_LBN_SELCHANGE( <id>, <memberFxn> ) 当选择发生更改时,框架会调用此成员函数。
LBN_SETFOCUS ON_LBN_SETFOCUS( <id>, <memberFxn> ) 在获得输入焦点后,框架会调用此成员函数。

让我们通过创建一个新的基于 MFC 对话框的应用程序来了解列表框的简单示例。

步骤 1 - 创建项目后,您将看到 TODO 行,它是文本控件的标题。删除标题并将其 ID 设置为 IDC_STATIC_TXT。

步骤 2 - 从工具箱中拖动列表框。

Listbox1

步骤 3 - 为文本控件添加控件变量。

Listbox2

步骤 4 - 为文本控件添加值变量。

Listbox3

步骤 5 - 为列表框控件添加控件变量。

Listbox4

步骤 6 - 为列表框控件添加事件处理程序。

Listbox5

步骤 7 - 从消息类型中选择 LBN_SELCHANGE,并为事件处理程序输入名称。

步骤 8 - 添加一个函数,该函数将加载列表框。

void CMFCListBoxDlg::LoadListBox() {
   CString str = _T("");
   for (int i = 0; i<10; i++) {

      str.Format(_T("Item %d"), i);
      m_listBox.AddString(str);
   }
}

步骤 9 - 从 CMFCListBoxDlg::OnInitDialog() 中调用该函数,如下面的代码所示。

BOOL CMFCListBoxDlg::OnInitDialog() {
   CDialogEx::OnInitDialog();

   // Set the icon for this dialog. The framework does this automatically
   // when the application's main window is not a dialog
   SetIcon(m_hIcon, TRUE);       // Set big icon
   SetIcon(m_hIcon, FALSE);      // Set small icon

   // TODO: Add extra initialization here
   LoadListBox();
   return TRUE; // return TRUE unless you set the focus to a control
}

步骤 10 - 这是事件处理程序的实现。这将显示列表框中当前选定的项目。

void CMFCListBoxDlg::OnLbnSelchangeList1() {
   // TODO: Add your control notification handler code here
   m_listBox.GetText(m_listBox.GetCurSel(),m_strItemSelected);
   UpdateData(FALSE);
}

步骤 11 - 编译并执行上述代码后,您将看到以下输出。

Listbox6

步骤 12 - 选择任何项目时,它将显示在文本控件上。

mfc_windows_controls.htm
广告