给我一个MFC ListControl的用法示例
时间: 2023-05-21 13:02:50 浏览: 144
当然可以,以下是一个简单的 MFC ListControl 的用法示例:
首先,你需要在你的对话框类中添加一个 ListControl 控件,可以在资源编辑器中添加。然后,在你的对话框类的头文件中添加以下代码:
```cpp
#include <afxcmn.h> // 包含 ListControl 的头文件
class CMyDialog : public CDialog
{
// ...
private:
CListCtrl m_listCtrl; // 声明 ListControl 控件
// ...
};
```
接下来,在你的对话框类的 OnInitDialog 函数中添加以下代码:
```cpp
BOOL CMyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// 初始化 ListControl 控件
m_listCtrl.Create(WS_VISIBLE | WS_BORDER | LVS_REPORT, CRect(10, 10, 300, 200), this, 1234);
m_listCtrl.InsertColumn(0, _T("Name"), LVCFMT_LEFT, 100);
m_listCtrl.InsertColumn(1, _T("Age"), LVCFMT_LEFT, 100);
m_listCtrl.InsertColumn(2, _T("Gender"), LVCFMT_LEFT, 100);
// 添加数据
m_listCtrl.InsertItem(0, _T("Tom"));
m_listCtrl.SetItemText(0, 1, _T("20"));
m_listCtrl.SetItemText(0, 2, _T("Male"));
m_listCtrl.InsertItem(1, _T("Mary"));
m_listCtrl.SetItemText(1, 1, _T("25"));
m_listCtrl.SetItemText(1, 2, _T("Female"));
return TRUE;
}
```
这段代码将创建一个 ListControl 控件,并添加三列数据:Name、Age 和 Gender。你可以根据自己的需要修改这些列的名称和宽度。然后,添加两行数据:Tom 和 Mary。
最后,你需要在你的对话框类的头文件中添加以下代码,以处理 ListControl 控件的通知消息:
```cpp
class CMyDialog : public CDialog
{
// ...
private:
afx_msg void OnLvnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult); // 处理 ListControl 的通知消息
DECLARE_MESSAGE_MAP()
};
```
在你的对话框类的实现文件中,添加以下代码:
```cpp
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
ON_NOTIFY(LVN_ITEMCHANGED, 1234, &CMyDialog::OnLvnItemchangedList1)
END_MESSAGE_MAP()
void CMyDialog::OnLvnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// 获取选中的行和列
int nItem = pNMLV->iItem;
int nSubItem = pNMLV->iSubItem;
// 获取选中的单元格的文本
CString strText = m_listCtrl.GetItemText(nItem, nSubItem);
// 显示选中的单元格的文本
AfxMessageBox(strText);
*pResult = 0;
}
```
这段代码将处理 ListControl 的通知消息,并在用户选中某个单元格时显示该单元格的文本。
这就是一个简单的 MFC ListControl 的用法示例。希望能对你有所帮助!
阅读全文