zoukankan      html  css  js  c++  java
  • Windows 程序设计(4) MFC-02 基本控件-下

    1. TabCtrl 标签控件

    1.1 创建主窗口

    1)CMFCTabControlDlg,拖拽标签控件

    2)增加变量 CTabCtrl m_tabCtrl

    3)设置相关成员变量和处理函数

    	CFilePage m_filePage;  //文件对象
    	CNet    m_netPage;     //网络对象
    	CReg  m_regPage;       //注册表对象
    #define MAX_DLG_PAGE 5
    	CDialog		 *m_pDialog[MAX_DLG_PAGE];
    	int			 m_CurSelTab;//保存当前选中
    
    	// 生成的消息映射函数
    	virtual BOOL OnInitDialog();
    public:
    	CTabCtrl m_tabCtrl;
    	afx_msg void OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult);
    

    1.2 创建三个Dialog和对应的类

    IDD_DIALOG_FILE 对应类CFilePage

    IDD_DIALOG_Net 对应类 CNet

    IDD_DIALOG_Reg对应类 CReg

    每个Dialog属性 【style】设置为 child 【border】设置为none

    1.3初始化对话框

    m_tabCtrl.InsertItem(0, _T("文件"));
    	m_tabCtrl.InsertItem(1, _T("网络"));
    	m_tabCtrl.InsertItem(2, _T("注册表"));
    
    	m_tabCtrl.SetPadding(19);
    	m_tabCtrl.SetMinTabWidth(50);
    	m_tabCtrl.SetItemSize(CSize(50, 25));
    
    	m_filePage.Create(IDD_DIALOG_FILE, &m_tabCtrl);
    	m_netPage.Create(IDD_DIALOG_NET, &m_tabCtrl);
    	m_regPage.Create(IDD_DIALOG_REG, &m_tabCtrl);
    
    	CRect rc;
    	m_tabCtrl.GetClientRect(rc);
    	rc.top += 25;
    	// 	rc.bottom -= 8;
    	// 	rc.left += 8;
    	// 	rc.right -= 8;
    
    	m_filePage.MoveWindow(&rc);
    	m_netPage.MoveWindow(&rc);
    	m_regPage.MoveWindow(&rc);
    
    	//把对话框对象指针保存起来
    	m_pDialog[0] = &m_filePage;
    	m_pDialog[1] = &m_netPage;
    	m_pDialog[2] = &m_regPage;
    	//显示初始页面
    	m_pDialog[0]->ShowWindow(SW_SHOW);
    	m_pDialog[1]->ShowWindow(SW_HIDE);
    	m_pDialog[2]->ShowWindow(SW_HIDE);
    
    	//保存当前选择
    	m_CurSelTab = 0;
    

    1.4消息处理函数

    void CMFCTabControlDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	m_pDialog[m_CurSelTab]->ShowWindow(SW_HIDE);
    	m_CurSelTab = m_tabCtrl.GetCurSel();
    	if (m_pDialog[m_CurSelTab])
    	{
    		m_pDialog[m_CurSelTab]->ShowWindow(SW_SHOW);
    	}
    	*pResult = 0;
    }
    

    2.Tree树形控件

    2.0简介

    1、控件简介: Tree树形控件也是我们编程过程中比较常用的一个控件,而且在其他软件中也经常能看到,比如Windows系统中的资源管理器

    2、控件的使用:
    a、拖拽Tree树形控件到对话框模版上;
    b、一些常用的属性:
    Check Boxes:结点前是否带有复选框;
    Edit Labels:结点名字是否可编辑;
    Has Buttons:父节点是否有+号可供展开;
    Has Lines:父子结点之间是否有连接线;
    Lines At Root:是否从根节点开始就带有虚线;
    等等吧,大家可以根据自己的需要设置相关的属性。

    c、为Tree树形控件绑定一个 CTreeCtrl 控件类型变量m_Tree;

    2.1初始化

    BOOL CFilePage::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    	HTREEITEM hRoot = m_Tree.InsertItem(_T("父1"));
    	HTREEITEM hSub1 = m_Tree.InsertItem(_T("子1"), hRoot);
    	HTREEITEM hSub2 = m_Tree.InsertItem(_T("子2"), hRoot);
    	HTREEITEM hSub3 = m_Tree.InsertItem(_T("子子1"), hSub2);
    	//b、获得节点的文本:
    		m_Tree.GetItemText(hSub3);
    	//c、设置节点的文本:
    		m_Tree.SetItemText(hSub3, _T("abc"));
    	return TRUE;
    }
    

    img

    2.2点击树形控件每个标签的处理函数

    void CFilePage::OnTvnSelchangedTree1(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
    	HTREEITEM hSelItem = m_Tree.GetSelectedItem();
    
    	CString str=m_Tree.GetItemText(hSelItem);
    	MessageBox(str);
    
    	*pResult = 0;
    }
    
    

    2.ListCtrl 高级列表控件

    imageVS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)

    1、控件简介:

    ListCtrl 高级列表控件也是我们平时编程过程中很常用的一个控件,一般涉及到报表展示、记录展示之类的,都需要ListCtrl 高级列表控件。例如:任务管理器啊,文件列表啊,等等都是ListCtrl 高级列表控件来实现的。

    2、控件的风格样式:

    LVS_ICON: 为每个item显示大图标
    LVS_SMALLICON: 为每个item显示小图标
    LVS_LIST: 显示一列带有小图标的item
    LVS_REPORT: 显示item详细资料

    直观的理解:Windows资源管理器,“查看” 标签下的 “大图标,小图标,列表,详细资料”
    具体可以通过代码指定控件的风格样式,也可以方便点,从控件的属性中直接修改:
    对应控件的 View 属性:Icon、Small Icon、List、Report 四项。
    img
    img
    img
    img
    比较常用的还是第四种:报表样式!

    3、初始化ListCtrl

    
    	CRect rect;
    	// 获取编程语言列表视图控件的位置和大小   
    	m_List.GetClientRect(&rect);
    
    	// 为列表视图控件添加全行选中和栅格风格   
    	m_List.SetExtendedStyle(m_List.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
    
    	// 为列表视图控件添加三列   
    	m_List.InsertColumn(0, _T("语言"), LVCFMT_CENTER, rect.Width() / 3, 0);
    	m_List.InsertColumn(1, _T("2012.02排名"), LVCFMT_CENTER, rect.Width() / 3, 1);
    	m_List.InsertColumn(2, _T("2011.02排名"), LVCFMT_CENTER, rect.Width() / 3, 2);
    
    	// 在列表视图控件中插入列表项,并设置列表子项文本   
    	m_List.InsertItem(0, _T("Java"));
    	m_List.SetItemText(0, 1, _T("1"));
    	m_List.SetItemText(0, 2, _T("1"));
    	m_List.InsertItem(1, _T("C"));
    	m_List.SetItemText(1, 1, _T("2"));
    	m_List.SetItemText(1, 2, _T("2"));
    	m_List.InsertItem(2, _T("C#"));
    	m_List.SetItemText(2, 1, _T("3"));
    	m_List.SetItemText(2, 2, _T("6"));
    	m_List.InsertItem(3, _T("C++"));
    	m_List.SetItemText(3, 1, _T("4"));
    	m_List.SetItemText(3, 2, _T("3"));
    
    
    

    4、消息处理函数

    void CMFCListCtrolDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
    {
    	LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
    	// TODO: 在此添加控件通知处理程序代码
    	*pResult = 0;
    
    	CString strLangName;    // 选择语言的名称字符串   
    	NMLISTVIEW *pNMListView = (NMLISTVIEW*)pNMHDR;
    
    	if (-1 != pNMListView->iItem)        // 如果iItem不是-1,就说明有列表项被选择   
    	{
    		// 获取被选择列表项第一个子项的文本   
    		strLangName = m_List.GetItemText(pNMListView->iItem, 0);
    		// 将选择的语言显示与编辑框中   
    		SetDlgItemText(IDC_LANG_SEL_EDIT, strLangName);
    	}
    }
    

  • 相关阅读:
    快速入门系列--GIT版本控制工具
    快速入门系列--NOSQL--05Redis也木有那么“高富帅”
    apt下载open-jdk8报错add-apt-repository: command not found
    jenkins-参数化构建(三)插件:Git Parameter
    jenkins-参数化构建(二)插件:Extended Choice Parameter
    jenkins-参数化构建(一)
    Jenkins-权限管理
    redis安装
    elk-图形化展示(八)
    elk-(七)
  • 原文地址:https://www.cnblogs.com/chance0x1/p/13124022.html
Copyright © 2011-2022 走看看