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 − 从工具箱中拖动列表框。
步骤 3 − 添加文本控件的控件变量。
步骤 4 − 为文本控件添加值变量。
步骤 5 − 添加列表框控件的控件变量。
步骤 6 − 添加列表框控件的事件处理程序。
步骤 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 − 当上面的代码被编译并执行时,您将看到以下输出。
步骤 12 − 当您选择任何项目时,它将显示在文本控件上。