树视控件在多文档中的使用

补血圣药

补血圣药

2016-01-29 12:06

树视控件在多文档中的使用,树视控件在多文档中的使用

树视控件在多文档中的使用


作者 5icomputer


下载源代码
 

    自从来到我们的论坛以来,认识了很多的朋友和编程的高手,从中学到了很多知识。我看在论坛中有很多人问关于树控的问题。故将树控的一些问题写出来,以供大家参考,同时也作为近一段时间来学习的总结。
    本文中主要讲到如何在多文档中加入一个ControlBar,以及如何在ControlBar中加入一个树控方法。这也是软件系统中常用的一种界面,希望能对大家有所帮助。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)

本例的运行结果如下:

    首先,新建一个多文档工程,将Sizecbar.cpp和Sizecbar.h复制到工程的文件加中,并将新文件加入到工程中。这样工程中加入了个新类CsizingControlBar。然后,利用Class Wizard 生成也基于CtoolBar的新类mybar。将基类改为CsizingControlBar。

在mybar类中加入OnUpdateCmdUI(CFrameWnd *pTarget, BOOL bDisableIfNoHndler)

代码如下:

void mybar::OnUpdateCmdUI(CFrameWnd *pTarget, BOOL bDisableIfNoHndler){UpdateDialogControls(pTarget, bDisableIfNoHndler);}

再在CMainFrame中加入mybar 的成员变量m_CtrlBar;在CmainFrame的OnCreate函数中加入一下代码:

if(!m_CtrlBar.Create("数据浏览条",this, CSize(200,200),TRUE,123)){TRACE0("Failed to create mybarn");return -1;// fail to create}m_CtrlBar.SetBarStyle(m_CtrlBar.GetBarStyle()|CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);m_CtrlBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_CtrlBar,AFX_IDW_DOCKBAR_LEFT); 

此时运行一下程序,将看到已经将mybar加入了工程中。下面将在mybar中加入一个树视控件。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)

新建个类MyTree 基于CTreeCtrl。再在mybar加入成员变量MyTree m_TreeCtrl;

将mybar重载WM_CREATE消息函数。在其中加入如下代码。

m_TreeCtrl.Create(WS_VISIBLE | WS_TABSTOP | WS_CHILD | WS_BORDER| TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES| TVS_DISABLEDRAGDROP|TVS_EDITLABELS|TVS_TRACKSELECT,CRect(10, 10, 300, 100), this, ID_TREECTRL);//m_TreeCtrl.SetImageList(&m_images,TVSIL_NORMAL);// set "normal" GUI-fontCFont *font = CFont::FromHandle((HFONT)::GetStockObject(DEFAULT_GUI_FONT));m_TreeCtrl.SetFont(font);HTREEITEM root = m_TreeCtrl.InsertItem("VCKBASE",0,0);HTREEITEM subroot1=m_TreeCtrl.InsertItem("程序员社区",1,1,root);HTREEITEM subroot2=m_TreeCtrl.InsertItem("文档中心",1,1,root);HTREEITEM subroot3=m_TreeCtrl.InsertItem("代码仓库",1,1,root);HTREEITEM subroot4=m_TreeCtrl.InsertItem("工具和资源",1,1,root);HTREEITEM subroot5=m_TreeCtrl.InsertItem("客服中心",1,1,root);HTREEITEM subroot6=m_TreeCtrl.InsertItem("个人专栏",1,1,root);m_TreeCtrl.InsertItem("开发论坛",1,1,subroot1);m_TreeCtrl.InsertItem("开发联盟",1,1,subroot1);m_TreeCtrl.InsertItem("人才交流",1,1,subroot1);m_TreeCtrl.InsertItem("用户注册",1,1,subroot1);m_TreeCtrl.InsertItem("VCity",1,1,subroot1);m_TreeCtrl.InsertItem("在线杂志",1,1,subroot2);m_TreeCtrl.InsertItem("个人专辑",1,1,subroot2);m_TreeCtrl.InsertItem("论坛精华",1,1,subroot2);m_TreeCtrl.InsertItem("酷库",1,1,subroot2);m_TreeCtrl.InsertItem("所有文章",1,1,subroot2);m_TreeCtrl.InsertItem("所有代码",1,1,subroot3);m_TreeCtrl.InsertItem("程序工具箱",1,1,subroot4);m_TreeCtrl.InsertItem("程序工具箱",1,1,subroot5);m_TreeCtrl.InsertItem("用户注册",1,1,subroot5);m_TreeCtrl.InsertItem("修改信息",1,1,subroot5);m_TreeCtrl.InsertItem("取回密码",1,1,subroot5);m_TreeCtrl.InsertItem("问题解答",1,1,subroot5);m_TreeCtrl.InsertItem("投稿",1,1,subroot5);m_TreeCtrl.InsertItem("联系我们",1,1,subroot5);m_TreeCtrl.SelectItem(root);m_TreeCtrl.Expand(root, TVE_EXPAND); 

在重载mybar的WM_SIZE消息函数,并在其中加入如下代码:

CRect rc;GetClientRect(&rc);m_TreeCtrl.MoveWindow(&rc); 

在CCTreeControlBarView中,添加成员变量m_Title,添加成员函数DrawRect(CDC *pDC);

代码如下:

void CCTreeControlBarView::DrawRect(CDC* pDC){CRect rect;pDC->Rectangle(100,100,400,400);rect.top=100;rect.left=100;rect.right=250;rect.bottom      
展开更多 50%)
分享

猜你喜欢

树视控件在多文档中的使用

C语言教程 C语言函数
树视控件在多文档中的使用

树视TreeView树视的使用技巧

编程语言 网络编程
树视TreeView树视的使用技巧

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在BCB中轻松使用ActiveX控件

编程语言 网络编程
在BCB中轻松使用ActiveX控件

在Word 2007中打开多文档方法小结

电脑入门
在Word 2007中打开多文档方法小结

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

树控件的双击响应

C语言教程 C语言函数
树控件的双击响应

在XHTML文档中合适的使用CSS和JavaScript

Web开发
在XHTML文档中合适的使用CSS和JavaScript

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

类似EXCEL的报表类库

类似EXCEL的报表类库

《高达破坏者2》轮子BOSS与系统要素经验分享

《高达破坏者2》轮子BOSS与系统要素经验分享
下拉加载更多内容 ↓