zoukankan      html  css  js  c++  java
  • 关于CTreeView中CTreeCtrl空间的使用

    昨天QQ群里有人问我怎么实现CTreeCtrl的功能,说实话,我也是一个VC 的初级学者,没有弄过CTreeView的代码,参考了MSDN后,写了一小段代码,和大家一起分享,其中包括窗口切分,都是比较基础的内容。【以下代码是在VC .net 2005中调试成功】
     
    1.首先建立一个“基于单文档”的MFC应用程序,在CMainFrame类中重载OnCreateClient()函数,其内部的代码为:
     
    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
     
    {
     
    // TODO: Add your specialized code here and/or call the base class
     
    m_wndSplitter.CreateStatic(this, 1, 2);//生成行列的静态窗口划分。
     
     
     
    m_wndSplitter.CreateView(0,0, RUNTIME_CLASS(CMySplitterTreeView), CSize(0, 0), pContext);
     
    m_wndSplitter.CreateView(0,1, RUNTIME_CLASS(CEditView), CSize(0, 0), pContext);
     
     
     
    CRect r;
     
    GetClientRect(&r);
     
     
     
    //设置第行的高。
     
    m_wndSplitter.SetRowInfo( 0, r.Height(), 0 );
     
    //设置第列的宽。
     
    m_wndSplitter.SetColumnInfo( 0, r.Width()/4, 0 );
     
     
     
    return TRUE;
     
     
     
    //将原来重载生成的返回代码注释掉。
     
    //return CFrameWnd::OnCreateClient(lpcs, pContext);
     
    }
     
     
     
    2.上面的语句m_wndSplitter.CreateView(0,0, RUNTIME_CLASS(CMySplitterTreeView), CSize(0, 0), pContext);中的CMySplitterTreeView是自己添加的MFC类,其基类设置为CTreeView。
     
    3.在生成的CMySplitterTreeView类中添加成员变量CTreeCtrl * ptheTree;【以备以后调用使用】。并重载OnInitialUpdate()函数,其内部的代码为:
     
     
     
    void CMySplitterTreeView::OnInitialUpdate()
     
    {
     
    CTreeView::OnInitialUpdate();
     
     
     
    // TODO: Add your specialized code here and/or call the base class
     
    ptheTree = &GetTreeCtrl();
     
    //::SetWindowLong(ptheTree->m_hWnd,TVS_HASLINES|TVS_LINESATROOT|TVS_HASBUTTONS,NULL);
     
     
     
    //修改CTreeCtrl控件的Style。
     
    ptheTree->ModifyStyle(0,TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS);
     
     
     
    TVINSERTSTRUCT tvInsert;
     
    HTREEITEM hTreeItem;
     
    tvInsert.hInsertAfter = NULL;//TVI_LAST;
     
    tvInsert.hParent = TVI_ROOT;
     
    tvInsert.item.mask = TVIF_TEXT;
     
    tvInsert.item.pszText = L"一年级";
     
    hTreeItem = ptheTree->InsertItem(&tvInsert);
     
    tvInsert.hParent = hTreeItem;
     
    tvInsert.item.pszText = L"1班";
     
    ptheTree->InsertItem(&tvInsert);
     
    tvInsert.item.pszText = L"2班";
     
    ptheTree->InsertItem(&tvInsert);
     
    ptheTree->Expand(hTreeItem,TVE_EXPAND); //默认为合上的【TVE_COLLAPSE】。
     
     
     
    tvInsert.hParent = TVI_ROOT;
     
    tvInsert.item.pszText = L"二年级";
     
    hTreeItem = ptheTree->InsertItem(&tvInsert);
     
    tvInsert.hParent = hTreeItem;
     
    tvInsert.item.pszText = L"1班";
     
    ptheTree->InsertItem(&tvInsert);
     
    tvInsert.item.pszText = L"2班";
     
    ptheTree->InsertItem(&tvInsert);
     
    tvInsert.item.pszText = L"3班";
     
    ptheTree->InsertItem(&tvInsert);
     
    }
     
    运行一下,就会发现在窗体被分割成两个部分,其中左侧的那个部分中有一个CTreeCtrl树形控
     
  • 相关阅读:
    维特比算法 实现中文分词 python实现
    最大匹配算法进行分词 前向 后向 python实现
    动态规划 编辑距离问题(Edit Distance Problem)
    “RuntimeError: Trying to backward through the graph a second time, but the buffers have already been freed. Specify retain_graph=True when calling backward the first time”
    PCA主成分分析 原理讲解 python代码实现
    卷积的理解 python代码实现 pytorch 多输入多输出通道的理解
    AdaBoost python代码实现
    随机森林 python实现
    Apache配置转发
    JS 由前端保存到文件
  • 原文地址:https://www.cnblogs.com/blogpro/p/11426822.html
Copyright © 2011-2022 走看看