MFC学习笔记一: List Contorl 的使用步骤

 

 

步骤一:

拖放list control 控件在对话框上,在属性中设定View为Report。

注: list control共有4中外观模式:Icon(图标)、small Icon(小图标)、List(列表)、Report(报表)。

Icons

控件显示项的列表,使用32*32(像素)大小的icons,推荐使用这么大小的icon,如果你想用图标来概述你的观点。

 

Small Icons 和剩下的两项相似的想法,它使用16*16(像素)大小的图标来显示一个单一的列表项。再次,没有提供关于这个列表的详细说明。这种列表是用来组织和其他主题在不同的列,如果列表有序,序列编排为按字母顺序从左到右。
List 这种列表,使用small icons,也是组织列;这种情况下,在第二列填充之前必须填充第一列。如果列表有序,序列编排为自顶向下的顺序。
Report 安排项的目的是提供列表开发者的信息。

MFC学习笔记一: List Contorl 的使用步骤_第1张图片MFC学习笔记一: List Contorl 的使用步骤_第2张图片

步骤二:

控件绑定变量:

CListCtrl m_ListBox1; //在文件头定义CListCtrl变量


//在对应对话框的DoDataExchange()函数中将List Control绑定变量m_ListBox1
void CTheAppDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);

	DDX_Control(pDX, IDC_LIST1, m_ListBox1);
}

步骤三:

           绑定控件的消息处理函数,以单击列表框的消息为例。

           首先在对话框的窗口类中定义单击列表框消息处理函数;

// CTheAppDlg 对话框
class CTheAppDlg : public CDialogEx
{
// 构造
public:
	CTheAppDlg(CWnd* pParent = NULL);	// 标准构造函数

public:
	CListCtrl m_ListBox1;

// 对话框数据
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_THEAPP_DIALOG };
#endif

protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持

// 实现
protected:
	HICON m_hIcon;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
    //定义单击列表框的额消息处理函数
	afx_msg void OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult);

};

然后在绑定消息处理函数处理的消息。 

BEGIN_MESSAGE_MAP(CTheAppDlg, CDialogEx)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
    //设置当收到IDC_LIST1的NM_CLICK消息时,程序运行OnLvnItemchangedList1()函数
	ON_NOTIFY(NM_CLICK, IDC_LIST1, &CTheAppDlg::OnLvnItemchangedList1)

END_MESSAGE_MAP()

 

步骤四:

           编辑消息处理函数。

void CTheAppDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;

	CString  strLangName;
	CString  str;

	NMLISTVIEW *pNMListView = (NMLISTVIEW*)pNMHDR;
	if (-1 != pNMListView->iItem)
	{
		strLangName = m_ListBox1.GetItemText(pNMListView->iItem, 1);
		SetDlgItemText(IDC_EDIT1, strLangName);

		Value[pNMListView->iItem]++;
		for (int i = 0; i < m_ListBox1.GetItemCount(); i++)
		{
			str.Format(L"%d", Value[i]);
			m_ListBox1.SetItemText(i, 2, str);
		}
		int nSel = m_ListBox1.GetSelectionMark();
		str.Format(L"选中了%d行\n", nSel);
		OutputDebugString(str);
	}
}

 

你可能感兴趣的:(MFC)