mfc listCtrl 关键字查询
时间: 2023-08-11 10:08:32 浏览: 210
要在 MFC List Control 中进行关键字查询,可以按照以下步骤操作:
1. 创建 Edit Control 用于输入关键字。
2. 为 Edit Control 添加响应函数,以便在用户输入时执行查询操作。
3. 在 List Control 中遍历所有项,并将匹配关键字的项高亮显示。
以下是一个简单的示例代码:
```
// 声明 Edit Control 句柄
CEdit m_editCtrl;
// 声明 List Control 句柄
CListCtrl m_listCtrl;
// Edit Control 的响应函数
void OnEnChangeEditCtrl()
{
CString strKeyword;
m_editCtrl.GetWindowText(strKeyword);
// 遍历 List Control 中的所有项
for (int i = 0; i < m_listCtrl.GetItemCount(); i++)
{
CString strItemText = m_listCtrl.GetItemText(i, 0);
if (strItemText.Find(strKeyword) != -1)
{
// 匹配成功,将该项高亮显示
m_listCtrl.SetItemState(i, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
}
else
{
// 不匹配,取消高亮显示
m_listCtrl.SetItemState(i, 0, LVIS_SELECTED | LVIS_FOCUSED);
}
}
}
// 初始化函数
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 获取 Edit Control 和 List Control 的句柄
m_editCtrl.Attach(GetDlgItem(IDC_EDIT_CTRL)->m_hWnd);
m_listCtrl.Attach(GetDlgItem(IDC_LIST_CTRL)->m_hWnd);
// 设置 List Control 的风格
m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
// 添加列表项
m_listCtrl.InsertColumn(0, _T("Name"), LVCFMT_LEFT, 100);
m_listCtrl.InsertItem(0, _T("Apple"));
m_listCtrl.InsertItem(1, _T("Banana"));
m_listCtrl.InsertItem(2, _T("Orange"));
return TRUE;
}
```
在上面的示例代码中,我们创建了一个 Edit Control 和一个 List Control,并在 Edit Control 的响应函数中实现了关键字查询功能。在初始化函数中,我们还添加了一些列表项作为示例数据。你可以根据自己的需求修改代码。
阅读全文