VS2010/MFC编程初识一【ListControl列表视图控件和SliderControl滑块控件的 基本用法】

这几天原本是打算从最基本的开始学习C++,但是由于工作需要,我并没有太多时间从头开始学习,所以只能从安排给我的工作内容中一边完成工作一边学习。

这两天用到了ListControl列表视图控件和SliderControl滑块视图控件以及ButtonControl按钮控件。先记下ListControl列表视图控件和SliderControl的简单用法吧。

ListControl有4种样式风格:Icon、Small Icon、List和Report。4种风格各自的特点:

       Icon大图标:列表项的图标通常为32×32像素,在图标的下面显示标签。

       Small Icon小图标:列表项的图标通常为16×16像素,在图标的右面显示标签。

       List列表:与小图标风格类似,图标和文字的对齐方式不同。

       Report报表:ListControl可以包含一个列表头来描述各列的含义。每行显示一个列表项,通常可以包含多个列表子项。最左边的列表子项的标签左边可以添加一个图标,右边的所有子项则只能显示文字。

ListControl和SliderControl应用实例:

   1. 创建一个基于对话框的MFC工程,名称设置为“MeueSelect”。

   2.在自动生成的对话框IDD_MEUESELECT_DIALOG中放入一个ListControl,view属性设置为Report,放入一个SliderControl.

   3. 右键给控件添加变量属性,分别命名为m_List和m_Slider。

VS2010/MFC编程初识一【ListControl列表视图控件和SliderControl滑块控件的 基本用法】_第1张图片


   4.在对话框初始化时,虚拟几科成绩放进列表中,在BOOL CMeueSelectDlg::OnInitDialog()函数中写入代码:

int nRow;//选中行
BOOL CMeueSelectDlg::OnInitDialog(){CDialogEx::OnInitDialog();// TODO: 在此添加额外的初始化nRow=-1;CRect rect;//获取编程语言列表视图控件的位置和大小m_List.GetClientRect(rect);//为列表视图控件添加选中行风格m_List.SetExtendedStyle(m_CarList.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);m_List.SetItemState(0, 0,LVIS_SELECTED|LVIS_FOCUSED); //为列表控件视图添加6列m_List.InsertColumn(0,_T("科目"),LVCFMT_CENTER,rect.Width()/6,0);m_List.InsertColumn(1,_T("第一次模拟测试"),LVCFMT_CENTER,rect.Width()/3,1);m_List.InsertColumn(2,_T("第二次,模拟测试"),LVCFMT_CENTER,rect.Width()/3,2);m_List.InsertColumn(3,_T("第三次模拟测试"),LVCFMT_CENTER,rect.Width()/3,3);//在列表视图控件中插入列表项,并设置列表子项文本m_List.InsertItem(0, _T("物理")); m_List.SetItemText(0, 1, _T("99")); m_List.SetItemText(0, 2, _T("95")); m_List.SetItemText(0, 3, _T("99")); m_List.InsertItem(1, _T("高数")); m_List.SetItemText(1, 1, _T("82")); m_List.SetItemText(1, 2, _T("92")); m_List.SetItemText(1, 3, _T("96")); m_List.InsertItem(2, _T("C++")); m_List.SetItemText(2, 1, _T("93")); m_List.SetItemText(2, 2, _T("96")); m_List.SetItemText(2, 3, _T("96")); //滑块设置m_Slider.SetRange(0,100);//设置范围m_Slider.SetTicFreq(10);//每2个单位画一个刻度m_Slider.SetPos(0);//滑块初始值return TRUE; // return TRUE unless you set the focus to a control// 异常: OCX 属性页应返回 FALSE}


    5.接下来实现选中列表中的一行,SliderControl和ListControl关联,滑动滑块,期末成绩一栏的成绩发生相应变化。 
  

在对话框IDD_MEUESELECT_DIALOG中,给分别给SliderControl和ListControl右键添加事件处理程序。

VS2010/MFC编程初识一【ListControl列表视图控件和SliderControl滑块控件的 基本用法】_第2张图片VS2010/MFC编程初识一【ListControl列表视图控件和SliderControl滑块控件的 基本用法】_第3张图片

   6.代码操作:

void CMeueSelectDlg::OnClickCarListLine(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码

	//得到具体的某一项:

	//首先得到点击的位置
	POSITION pos=m_CarList.GetFirstSelectedItemPosition();
	if(pos==NULL)
	{
		MessageBox(_T("请至少选择一项"),_T("tip"),MB_ICONEXCLAMATION);
		return;
	}
	//得到行号,通过POSITION转化
	nRow=(int)m_List.GetNextSelectedItem(pos);
	//得到列中的内容(0表示第一列,同理1,2,3...表示第二,三,四...列)

	CString str=m_List.GetItemText(nRow,3);

	m_Slider.SetPos(_ttoi(str));//刻度值变化
       

	*pResult = 0;
}

//当调节滑块位置的时候能得到相应的数据
void CMeueSelectDlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMCUSTOMDRAW pNMCD = reinterpret_cast(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码

	CString sliderV;
	sliderV.Format(_T("%d"),m_Slider.GetPos());

	m_List.SetItemText(nRow,3,sliderV);

	*pResult = 0;
}


运行效果:

VS2010/MFC编程初识一【ListControl列表视图控件和SliderControl滑块控件的 基本用法】_第4张图片


你可能感兴趣的:(MFC)