博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC office2007风格设置左侧导航栏 [转]
阅读量:6904 次
发布时间:2019-06-27

本文共 2633 字,大约阅读时间需要 8 分钟。

当基础的框架搭好以后,我想为其添加一个左侧导航栏,过程如下:

在框架类的头文件添加一个导航栏参数:

CMFCOutlookBar m_navigation;

为了完善功能,在导航栏里面我添加了一个CTreeCtrl控件

CTreeCtrl m_treectrl;

并且创建一个函数创建导航栏,并关联CTreeCtrl控件,函数原型如下:

bool CreateNavigationBar(CMFCOutlookBar& bar, UINT uiID, int nInitialWidth, CTreeCtrl& treectrl);

uiID为CMFCOutlookBar的ID,nInitialWidth为导航栏的宽度,函数的实现如下

bool CBridgeWindow::CreateNavigationBar(CMFCOutlookBar& bar, UINT uiID, int nInitialWidth, CTreeCtrl& treectrl)

{

    //创建导航栏

    bar.Create("节点",this,CRect(0, 0, 250, 32000),uiID,WS_CHILD | WS_VISIBLE | CBRS_LEFT);
    CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*)m_navigation.GetUnderlyingWindow();
    if (pOutlookBar == NULL)
    {
        ASSERT(FALSE);
        return FALSE;
    }
    //pOutlookBar->EnableInPlaceEdit(TRUE);//标签能够被编辑
    DWORD dwStyle = AFX_CBRS_FLOAT | AFX_CBRS_AUTOHIDE | AFX_CBRS_RESIZE;
    CRect rectDummy(0, 0, 0, 0);
    const DWORD dwTreeStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS;
    treectrl.Create(dwTreeStyle,rectDummy,&bar,ID_TREELIST);
    TVINSERTSTRUCT tvInsert;
    tvInsert.hParent = NULL;
    tvInsert.hInsertAfter = NULL;
    tvInsert.item.mask = TVIF_TEXT;
    tvInsert.item.pszText = "河北";
    tvInsert.item.lParam=1;
    HTREEITEM hBridge = treectrl.InsertItem(&tvInsert);
    tvInsert.item.pszText = "山东";
    tvInsert.item.lParam=2;
    TVINSERTSTRUCT tNode;
    //tNode.hInsertAfter=hBridge;
    tNode.hParent=hBridge;
    tNode.item.mask=TVIF_TEXT;
    tNode.item.pszText="石家庄";
    tNode.item.lParam=1;
    treectrl.InsertItem(&tNode);
    hBridge=treectrl.InsertItem(&tvInsert);
    treectrl.InsertItem(TVIF_TEXT,"济南", 0, 0, 0, 0, 0, hBridge, NULL);

    pOutlookBar->AddControl(&treectrl, "节点列表", 2, TRUE, dwStyle);

    return false;
}

调用代码

int CBridgeWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)

{
    if (CFrameWndEx::OnCreate(lpCreateStruct) == -1)
        return -1;
    CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue);
    CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));
    CDockingManager::SetDockingMode(DT_SMART);
    m_wndRibbonBar.SetWindows7Look(false);
    RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);
    m_wndRibbonBar.Create(this);
    m_wndRibbonBar.LoadFromResource(IDR_RIBBON);
    // 启用 Visual Studio 2005 样式停靠窗口行为
//    CDockingManager::SetDockingMode(DT_SMART);
    // 启用 Visual Studio 2005 样式停靠窗口自动隐藏行为
//    EnableAutoHidePanes(CBRS_ALIGN_ANY);
    // 导航窗格将创建在左侧,因此将暂时禁用左侧的停靠:
//    EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM | CBRS_ALIGN_RIGHT);
    //创建左侧导航栏
    CreateNavigationBar(m_navigation,ID_NAVIGATION,250,m_treectrl);
    return 0;
}

当然,要在resource.h中添加资源ID:ID_NAVIGATION,ID_TREELIST,编译运行即可

源文: http://blog.chinaunix.net/uid-24585655-id-2125546.html

转载地址:http://hqldl.baihongyu.com/

你可能感兴趣的文章
CUDA2.2-原理之存储器访问
查看>>
IDA 在string窗口中显示中文字符串
查看>>
Linux下服务器端开发流程及相关工具介绍(C++)
查看>>
matplotlib绑定到PyQt5(无菜单)
查看>>
深入理解Javascript闭包概念
查看>>
Selenium--cssselector
查看>>
Ubuntu下Wine使用教程
查看>>
Java知多少(32)instanceof
查看>>
【LeetCode】187. Repeated DNA Sequences
查看>>
JS高级前端开发群加群说明及如何晋级
查看>>
Spring 3.1 Environment Profiles--转载
查看>>
Python 的三目运算
查看>>
继承、复写、重载等总结
查看>>
SQL 语句转换格式函数Cast、Convert
查看>>
其实,SSL也不是配通了就什么都不管的~~
查看>>
请不要用SECONDS_BEHIND_MASTER来衡量MYSQL主备的延迟时间【转】
查看>>
10个强大的Javascript表单验证插件推荐
查看>>
北邮iptv用WindowsMediaplayer打不开的解决的方法
查看>>
软件发布版本区别介绍-Alpha,Beta,RC,Release
查看>>
cdoj 1143 传输数据 最大流
查看>>