MFC文档应用程序CToolBar:设置两个工具条并列停靠到同一条边上 转

转自:http://blog.csdn.net/panshiqu/article/details/9369891#

将多个工具条同时并列停靠在某窗口的某一条边上。对于这种停靠方法,利用上述工具条控制函数DockControlBar的lpRect参数,通过控制工具条的停靠矩形区域的方法可以实现

1:在MainFrm.h中增加如下成员函数定义

// 增加
public:
    void DockControlBarLeftOf(CToolBar* bar, CToolBar* leftof);  、

2:在MainFrm.cpp中实现成员函数

void CMainFrame::DockControlBarLeftOf(CToolBar* bar, CToolBar* leftof)
{
    //设置工具条并列停靠到同一条边上
    CRect rect;
    DWORD dw;
    UINT n=0;
    RecalcLayout(); //重新显示
    leftof->GetWindowRect(rect);
    rect.OffsetRect(1, 0);
    dw=leftof->GetBarStyle();
    n=(dw&CBRS_ALIGN_TOP)?AFX_IDW_DOCKBAR_TOP:n;
    n=(dw&CBRS_ALIGN_BOTTOM&&n==0)?AFX_IDW_DOCKBAR_BOTTOM:n;
    n=(dw&CBRS_ALIGN_LEFT&&n==0)?AFX_IDW_DOCKBAR_LEFT:n;
    n=(dw&CBRS_ALIGN_RIGHT&&n==0)?AFX_IDW_DOCKBAR_RIGHT:n;
    DockControlBar(bar,n,&rect);
}

  

在这个函数中应注意对RecalcLayout()函数和OffsetRect()函数的调用,前一个函数用来重新显示被调整的客户区和工具条,后一个函数用来重新确定矩形区域,这相当于利用鼠标将第二个工具条窗口拖动到前一个工具条上然后释放。

3:就是调用上面这个函数,假设你新建的toolbar变量是m_wndToolBarNav,那么就用下面的程序替换原来MainFrm.cpp中的片段

原:

// TODO: 如果不需要可停靠工具栏,则删除这三行
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);

替换后:

// TODO: 如果不需要可停靠工具栏,则删除这三行
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBarNav.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
DockControlBarLeftOf(&m_wndToolBarNav,&m_wndToolBar);//主要是这里

以上三个步骤后,就可以去看效果啦

时间: 2024-07-29 06:54:19

MFC文档应用程序CToolBar:设置两个工具条并列停靠到同一条边上 转的相关文章

C++MFC编程笔记day05 文档类-单文档和多文档应用程序

文档类 1 相关类 CDocument类-父类是CCmdTarget类,所以,文档类也可以处理菜单等 命令消息.作用保存和管理数据. 注意事项:如何解决断言错误 2 在视图中显示文档中的数据 2.1 CView::OnInitialUpdate 作用初始化视图,在附加文档之后,显示之前,由框架调用. 2.2 CView::GetDocument 获取与视图相关的文档 2.3 CFrameWnd::InitialUpdateFrame 作用,初始化更新框架,可以引起CView::OnInitial

理解MFC 文档、视图、框架[转]

理解文档/视图框架                                      出处.雷神 了解文档和视图的相互作用关系是编写MFC程序的基本功.但是MFC的应用程序框架把文档和视图之间的关系封装了起来,初学的朋友往往不得要领,因此写程序往往被局限于在用向导生成的框架中.本文希望能够尽可能说明白文档视图框架之间是如何进行作用,希望能给一些朋友带来小小的帮助.     几个概念:     (虽然大家都知道了,雷神还是要重申一次)     文档对象:是用来保存数据的.     视图对象

MFC 文档/视图

1.文档修改后,关闭时需要保存,主要用到2个函数,在需要更改文档内容的函数里调用SetModifiedFlag(TRUE),另一个就是SaveModified()函数,简单的例子: BOOL CMFC_Doc::SaveModified() { // TODO: 在此添加专用代码和/或调用基类 return CDocument::SaveModified(); } void CMFC_Doc::SetColor() { m_color=RGB(0,0,0); SetModifiedFlag(TR

MFC文档、视图和框架

文档.视图.框架 文档/视图结构是MFC提供的一种不错的设计,它将数据的处理和显示分开来,这样更便于我们对程序的维护和扩展. 文档 文档对象用于管理和维护数据,包括保存数据.取出数据以及修改数据等操作,在数据被修改以后,文档可以通知其对应的所有视图更新显示. 文档类继承于CDocument类,主要成员函数: virtual BOOL OnNewDocument( ); 创建新文档.可以重载使用. virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);

MFC 文档view视图中根据鼠标指定的某个区域控制延迟显示tip的方法(原创)

前言 在处理文档视图中,有时候需要根据鼠标指定的位置显示相应的提示信息,对于软件功能优化设计,此功能很有必要. 一. 一般处理方法 ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用法.一般用法步骤: 1.添加CToolTipCtrl成员变量 m_ToolTip. 2.在父窗口中调用EnableToolTips(TRUE); 3.在窗口的OnCreate(或者其他适当的位置)中向ToolTip中

iis7网站默认文档包含文件夹设置

iis7在默认文档中可以设置首页,一般可以直接设置网站根目录下的页面为首页,但是当页面不在根目录下时,直接按路径添加就不行了,如"admin/default.aspx".添加完后只有"default.aspx"了,这是因为没有打开默认网站下的"启用父路径"功能 .选中"default web website",在右侧选中"asp"功能,打开,将"启用父路径"设置为true就可以添加&qu

关于开源文档:程序员可能忽略的十件事

大多数开源开发人员喜欢思考他们构建软件的质量,但其文档的质量常常被遗忘.没有人谈论一个项目的文档是多么出色,但其实文档对一个项目的成功却有直接的影响.没有一个良好的文档可能用户根本不会使用你的项目,亦或者压根不会喜欢. 然而大多数开源项目的文档都是令人极其失望的,主要从以下的几个方面来体现. 1. 缺乏一个好的自述或介绍 自述是潜在用户对你项目的第一印象.如果项目在 GitHub 上,自述自动的显示在该项目的主页上.如果你稍微不留神将自述弄错了,这些潜在的用户有可能再也不会回来了.所以你的项目必

.NET:WebApi 生成帮助文档及顺便创建简单的测试工具

==========最终的效果图========== ==========下面开始干活:生成帮助文档========== 一.创建 WebApi 项目 二.找到 HelpPageConfig.cs 并取消代码注释 1 config.SetDocumentationProvider( new XmlDocumentationProvider ( HttpContext.Current.Server.MapPath( "~/App_Data/XmlDocument.xml" ))); 三.

MFC多文档应用程序常用知识点

1.修改左上角圆形按图标.可以将要显示的图标放在资源中加载,也可以将图标文件放在程序目录下加载. CRect rt1; m_wndRibbonBar.GetClientRect(&rt1); CMFCRibbonApplicationButton * pAppButton = m_wndRibbonBar.GetApplicationButton(); HBITMAP hBitmap = (HBITMAP)::LoadImage(NULL, CScale3DCGlobal::GetAppllic