VS2010 MFC中 List Contorl 控件的使用
2013-06-06 00:29
411 查看
实现的功能:在单选列表视图控件中显示一个简单的编程语言排行榜,然后在用鼠标左键选择某列表项时,将选中列表项的文本显示到编辑框中。下面是具体实现步骤:
1. 创建一个基于对话框的MFC工程,名称设置为“Example29”。
2. 在自动生成的对话框模板IDD_EXAMPLE29_DIALOG中,删除“TODO: Place dialog controls here.”静态文本控件、“OK”按钮和“Cancel”按钮。添加一个List Control控件,ID设置为IDC_PROGRAM_LANG_LIST,View属性设为Report,即为报表风格,Single Selection属性设为True。再添加一个静态文本控件和一个编辑框,静态文本控件的Caption属性设为“选择的语言:”,编辑框的ID设为 IDC_LANG_SEL_EDIT,Read Only属性设为True。
3. 为列表视图控件IDC_PROGRAM_LANG_LIST添加CListCtrl类型的控件变量m_programLangList。
4. 在对话框初始化时,我们将编程语言排行榜加入到列表视图控件中,那么需要修改CExample29Dlg::OnInitDialog()函数为:
5. 我们希望在选中列表项改变时,将最新的选择项实时显示到编辑框中,那么可以使用NM_CLICK通知消息。为列表框IDC_PROGRAM_LANG_LIST的通知消息NM_CLICK添加消息处理函数CExample29Dlg::OnNMClickProgramLangList,并修改如下:
6. 运行程序,弹出结果对话框,在对话框的列表框中用鼠标改变选中项时,编辑框中的显示会相应改变。
效果图如下:
资料来源:/article/1303953.html
1. 创建一个基于对话框的MFC工程,名称设置为“Example29”。
2. 在自动生成的对话框模板IDD_EXAMPLE29_DIALOG中,删除“TODO: Place dialog controls here.”静态文本控件、“OK”按钮和“Cancel”按钮。添加一个List Control控件,ID设置为IDC_PROGRAM_LANG_LIST,View属性设为Report,即为报表风格,Single Selection属性设为True。再添加一个静态文本控件和一个编辑框,静态文本控件的Caption属性设为“选择的语言:”,编辑框的ID设为 IDC_LANG_SEL_EDIT,Read Only属性设为True。
3. 为列表视图控件IDC_PROGRAM_LANG_LIST添加CListCtrl类型的控件变量m_programLangList。
4. 在对话框初始化时,我们将编程语言排行榜加入到列表视图控件中,那么需要修改CExample29Dlg::OnInitDialog()函数为:
BOOL CExample29Dlg::OnInitDialog() { CDialogEx::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here CRect rect; // 获取编程语言列表视图控件的位置和大小 m_programLangList.GetClientRect(&rect); // 为列表视图控件添加全行选中和栅格风格 m_programLangList.SetExtendedStyle(m_programLangList.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES); // 为列表视图控件添加三列 m_programLangList.InsertColumn(0, _T("语言"), LVCFMT_CENTER, rect.Width()/3, 0); m_programLangList.InsertColumn(1, _T("2012.02排名"), LVCFMT_CENTER, rect.Width()/3, 1); m_programLangList.InsertColumn(2, _T("2011.02排名"), LVCFMT_CENTER, rect.Width()/3, 2); // 在列表视图控件中插入列表项,并设置列表子项文本 m_programLangList.InsertItem(0, _T("Java")); m_programLangList.SetItemText(0, 1, _T("1")); m_programLangList.SetItemText(0, 2, _T("1")); m_programLangList.InsertItem(1, _T("C")); m_programLangList.SetItemText(1, 1, _T("2")); m_programLangList.SetItemText(1, 2, _T("2")); m_programLangList.InsertItem(2, _T("C#")); m_programLangList.SetItemText(2, 1, _T("3")); m_programLangList.SetItemText(2, 2, _T("6")); m_programLangList.InsertItem(3, _T("C++")); m_programLangList.SetItemText(3, 1, _T("4")); m_programLangList.SetItemText(3, 2, _T("3")); return TRUE; // return TRUE unless you set the focus to a control }
5. 我们希望在选中列表项改变时,将最新的选择项实时显示到编辑框中,那么可以使用NM_CLICK通知消息。为列表框IDC_PROGRAM_LANG_LIST的通知消息NM_CLICK添加消息处理函数CExample29Dlg::OnNMClickProgramLangList,并修改如下:
void CExample29Dlg::OnNMClickProgramLangList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); // TODO: Add your control notification handler code here *pResult = 0; CString strLangName; // 选择语言的名称字符串 NMLISTVIEW *pNMListView = (NMLISTVIEW*)pNMHDR; if (-1 != pNMListView->iItem) // 如果iItem不是-1,就说明有列表项被选择 { // 获取被选择列表项第一个子项的文本 strLangName = m_programLangList.GetItemText(pNMListView->iItem, 0); // 将选择的语言显示与编辑框中 SetDlgItemText(IDC_LANG_SEL_EDIT, strLangName); } }
6. 运行程序,弹出结果对话框,在对话框的列表框中用鼠标改变选中项时,编辑框中的显示会相应改变。
效果图如下:
资料来源:/article/1303953.html
相关文章推荐
- vc2010使用CMFCEditBrowseCtrl控件导致程序退出崩溃解决
- MFC_windows media player控件的使用(VS2013 )
- VS 2010中使用MSCOMM串口控件实现串口通信
- VS2010 MFC中的Picture控件显示图像
- iocomp控件-iPlotX在vs2013 mfc环境下的使用
- VS中MFC图表控件teechart使用的小Demo
- VS2010中MFC利用TeeChart控件实现画图
- VS2010 使用TeeChart绘图控件 - 之二 - 绘制图形(折线图,柱状图)
- VS2013 MFC中TeeChart控件画波形使用总结
- 关于VS2013 mfc使用Edit control控件显示输出内容问题
- VS2010中如何实现自定义MFC控件
- vs2010下使用绘图控件MsChart的方法
- vs2010 MFC 为控件添加成员变量的问题
- VS2010 使用TeeChart绘图控件 - 之一 - 控件和类的导入
- mfc中控件的使用可以查看本地pdf文件(vs2013环境)
- MFC 在回调函数中使用成员或控件(多线程)
- MFC 表格控件的使用
- vs2010 MFC中listcontrol控件的使用
- MFC 使用static控件显示时间 并设置控件的字体格式和颜色
- VS 编译选项,MFC的使用