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;
}

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 高级列表控件

VS2010/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 四项。









比较常用的还是第四种:报表样式!

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);
}
}

最新文章

  1. 介介介是一个ORM
  2. HTML5 Canvas 高仿逼真 3D 布料图案效果
  3. 内核源码分析之linux内核栈(基于3.16-rc4)
  4. redis+PHP实现的一个优先级去重队列
  5. BAT清理垃圾
  6. Windows下用C语言获取进程cpu使用率,内存使用,IO情况
  7. PDO事务管理DEMO
  8. HDU1698_Just a Hook(线段树/成段更新)
  9. DrawingCombiner——CAD图纸批量合并软件
  10. 顺序表(C++实现)
  11. 让Mongo在Spring中跑起来
  12. 【netcore基础】ConcurrentDictionary 使用字符串作为key给代码加锁且使用EF事物防止并发调用数据混乱的问题
  13. 63(原67).纯 CSS 创作单元素点阵 loader
  14. 线程安全-005-synchronized其他概念
  15. Python+OpenCV图像处理(四)—— 色彩空间
  16. virtualbox 中centOS在不能ssh
  17. angular学习总结
  18. echarts - 特殊需求实现方案汇总
  19. OpenCV获取IP摄像头视频
  20. Py-apply用法学习【转载】

热门文章

  1. pdf去水印,pdf解密,pdf转MarkDown
  2. vue使用IntersectionObserver实现无限下拉信息流
  3. [工具推荐]004.EXE签名工具SignTool使用教程
  4. C++ 海量代码 排查内存/GDI泄漏历程
  5. WEB APPLICATION PENETRATION TESTING NOTES
  6. WebSocket是什么,有什么作用和特点?
  7. css引入方式和基本样式
  8. JavaScript (四) js的基本语法 - - 函数练习、arguments、函数定义、作用域、预解析
  9. Java实现蓝桥杯 算法提高 八皇后 改
  10. Java实现 蓝桥杯VIP 算法训练 学做菜