MFC 实现搜索框 请给出示例代码
时间: 2023-08-18 16:10:38 浏览: 242
MFC 中实现搜索框需要用到 Edit Control 和 List Control,具体做法如下:
1. 在对话框资源中添加 Edit Control 和 List Control 控件,分别设置 ID 为 IDC_SEARCH 和 IDC_LIST。
2. 在对话框类中添加成员变量,分别为 Edit Control 和 List Control 控件的指针:
```c++
CEdit* m_pEditSearch;
CListCtrl* m_pListCtrl;
```
3. 在 OnInitDialog 函数中获取 Edit Control 和 List Control 控件的指针,并为 Edit Control 控件添加消息响应函数:
```c++
BOOL CMyDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
// 获取 Edit Control 和 List Control 控件的指针
m_pEditSearch = (CEdit*)GetDlgItem(IDC_SEARCH);
m_pListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST);
// 为 Edit Control 控件添加消息响应函数
m_pEditSearch->ModifyStyle(0, ES_SEARCH);
return TRUE;
}
```
4. 在 Edit Control 控件的消息响应函数中处理搜索逻辑:
```c++
void CMyDialog::OnEnChangeSearch()
{
CString strSearch;
m_pEditSearch->GetWindowText(strSearch);
m_pListCtrl->DeleteAllItems(); // 清空 List Control 控件
// 在 List Control 控件中搜索匹配的项
for (int i = 0; i < m_pListCtrl->GetItemCount(); i++)
{
CString strItem = m_pListCtrl->GetItemText(i, 0);
if (strItem.Find(strSearch) != -1)
{
m_pListCtrl->SetItemState(i, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
m_pListCtrl->EnsureVisible(i, FALSE);
}
}
}
```
在 Edit Control 控件的 OnEnChange 消息响应函数中获取 Edit Control 控件中的文本,并遍历 List Control 控件中的所有项,如果找到匹配的项,则设置该项为选中状态并滚动到该项。注意,需要在 List Control 控件中添加列并添加项才能进行搜索。
以上是 MFC 中实现搜索框的基本做法,需要根据具体需求进行修改和优化。
阅读全文