76上位机VC MFC列表视图实现导航界面功能
76上位机VC MFC列表视图实现导航界面功能
功能展示
用列表视图加载图片作为导航界面,供用户选择操作将会更加直观与便捷会使我们开发的上位机程序更具特色,那么如何实现列表视图的导航功能呢?我们当前例程就手工实现了,效果如图; 要点提示 列表视图控件可以响应用户鼠标双击的操作即NM_DBLCLK;也就是说只要用户在列表视图上双击了鼠标,就会触发这一消息,我们只要在处理这一消息时也就是处理函数OnDblclkList1()中便可实现我们想要的功能;用户双击了列表视图控件的哪一子项呢?我们可以通过intcursel=m_List.GetSelectionMark();来获得;cursel也用户当前点击的子项,m_List是我们自定义的列表视图变量;
实现功能 1.新建基于对话框的应用程序 2.在主对话框资源中添加列表视图控件关联变量CListCtrl m_List;,及<删除选中内容><全部还原>按钮关联函数; 3.添加几个图标和几个CHECK BOX按钮;及一个CImageList m_ImageList;变量用于设置列表视图的图标
4.初始化 - m_List m_ImageList
- m_ImageList.Create(32,32,ILC_COLOR32|ILC_MASK,0,0);
- m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_0));
- m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_1));
- m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_2));
- m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_3));
- m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_4));
- m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_5));
- m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_6));
- m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_7));
- m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_8));
- m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_9));
- m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_10));
- m_ImageList.Add(::AfxGetApp()->LoadIcon(IDI_11));
- m_List.SetImageList(&m_ImageList,TVSIL_NORMAL);
- m_List.InsertItem(0,"选项0",0);
- m_List.InsertItem(1,"选项1",1);
- m_List.InsertItem(2,"选项2",2);
- m_List.InsertItem(3,"选项3",3);
- m_List.InsertItem(4,"选项4",4);
复制代码- m_List.InsertItem(5,"选项5",5);
- m_List.InsertItem(6,"选项6",6);
- m_List.InsertItem(7,"选项7",7);
- m_List.InsertItem(8,"选项8",8);
- m_List.InsertItem(9,"选项9",9);
- m_List.InsertItem(10,"选项10",10);
- m_List.InsertItem(11,"选项11",11);
- <div style="text-align: center;"><span style="font-size: large; line-height: 1.5;">3.添加列表视图控件的鼠标双击函数</span></div>void CGkbc8Dlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
- {
- int cursel=m_List.GetSelectionMark();
- if(cursel==-1)return;
- switch(cursel)
- {
- case 0:
- {
- CButton *p=(CButton*)GetDlgItem(IDC_0);
- p->SetCheck(!p->GetCheck());//有选中就反选
- break;
- }
- }
- <div style="text-align: center;"><span style="font-size: large; line-height: 1.5;">添加两按钮的响应函数实现部分</span></div>void CGkbc8Dlg::OnDelete()
- {
- for(int i=IDC_0;i<IDC_0+12;i++)//遍历全部组合框
- {
- CButton *p=(CButton*)GetDlgItem(i);
- if(p->GetCheck())//有选中就隐藏
- p->ShowWindow(SW_HIDE);
- }
- }
- void CGkbc8Dlg::OnRestore()
- {
- for(int i=IDC_0;i<IDC_0+12;i++)//遍历全部组合框
- {
- CButton *p=(CButton*)GetDlgItem(i);
- p->ShowWindow(SW_SHOW);
- }
- }
- <div style="text-align: center;"><b><font size="4">我们来演示下功能实现的整个过程</font></b></div>
复制代码
|