https://www.hdzikao.com

CFrameWnd管理控制条(mfc 禁止菜单栏移动,工具栏变到菜单栏上面)【cframewnd管理控制条】

[导读] 大家好,今天小热关注到一个比较有意思的话题,就是关于EnableDocking的问题,于是小编就整理了4个相关介绍EnableDocking的解答,让我们一起看看吧。 文章目录: CFrameWnd管理控制条 mfc 禁止菜单

CFrameWnd管理控制条(mfc 禁止菜单栏移动,工具栏变到菜单栏上面)【cframewnd管理控制条】

大家好,今天小热关注到一个比较有意思的话题,就是关于EnableDocking的问题,于是小编就整理了4个相关介绍EnableDocking的解答,让我们一起看看吧。

文章目录:

  1. CFrameWnd管理控制条
  2. mfc 禁止菜单栏移动,工具栏变到菜单栏上面
  3. 在mfc对话框工程中,如何使用CDockablePane。另外,在单文档工程中,能否...
  4. MFC基于对话框添加了两个toolbar,效果如下,如何实现

一、CFrameWnd管理控制条

CFrameWnd,这种主框架窗口以其丰富的控制条设计而闻名,如工具条和状态条等,它们都基于基础类CControlBar。当鼠标滑过工具条或菜单区域,会即时显示相关提示信息在状态栏,或者通过Tip形式弹出。对于未映射消息的命令,CFrameWnd会自动启用禁用机制。当客户区内容发生变化时,视图和控制条会自动调整布局,这是CFrameWnd封装的智能功能。

以下是几个关键的控制条操作函数:

  • EnableDocking(): 允许控制条根据需要在客户区内浮动或固定。
  • DockControlBar(): 将控制条放置在客户区的边缘位置。
  • FloatControlBar(): 使控制条脱离客户区,以独立浮动的形式显示。
  • ShowControlBar(): 控制控制条的可见性,显示或隐藏。
  • SaveBarState(): 保存所有控制条的状态,以便于存储在初始化文件或注册表中。
  • LoadBarState(): 从存储位置恢复控制条的初始状态。
  • GetDockState(): 获取当前控制条的状态信息,并封装到CDockState对象中。
  • SetDockState(): 依据CDockState对象中的信息,恢复控制条状态。
  • SetMessageText(): 在状态栏的第一个面板区域显示指定的信息。
  • RecalcLayout(): 重置视图和控制条的位置,当控制条位置或客户区尺寸改变时自动触发。你可以重载此功能或主动调用以适应需求。

扩展资料

CFrameWnd类往往用于创建应用程序的主窗口,因为它能很好地支持系统菜单和控制条(工具条、状态条等),为此定义了大量的成员函数和变量。在编写文档/视图结构的应用程序时,CFrameWnd作为主窗口管理视图和文档对象。视图对象和控制条都成为CFrameWnd的子窗口,它们分享客户区,其位置被CFrameWnd有效地排列。 CFrameWnd直接支持单文档界面(SDI),对于多文档界面(MDI),使用其派生类CMDIFrameWnd和CMDIChildWnd。

二、mfc 禁止菜单栏移动,工具栏变到菜单栏上面

同时禁止工具栏停靠看一看。

//停靠设置

AddPane(&m_wndMenuBar);

EnableDocking(CBRS_ALIGN_ANY);

EnableAutoHidePanes(CBRS_ALIGN_ANY);

SetMenuBarState(AFX_MBS_VISIBLE);

//EnablePaneMenu(TRUE, 0/*去掉"自定义菜单"*/, NULL, IDM_TOOLBAR);//这句看你要不要TOOLBAR上的“自定义”按钮

m_wndToolBar.EnableDocking(CBRS_ALIGN_TOP);

DockPane(&m_wndToolBar);

三、在mfc对话框工程中,如何使用CDockablePane。另外,在单文档工程中,能否...

把你邮箱给我,我发给你

框架中 EnableDocking(CBRS_ALIGN_ANY);

m_wndDock.Create(参数);

m_wndDock的一些属性样式设置函数

m_wndDock.EnableDocking(CBRS_ALIGN_ANY);

DockPane(&m_wndDock);

具体的CDockablePane成员函数的使用,参看我回答评论第一条发的网址。

四、MFC基于对话框添加了两个toolbar,效果如下,如何实现

在对话框属性里面可以增加菜单项

第一个工具栏:

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT,  

    WS_CHILD | WS_VISIBLE | CBRS_TOP |  

    CBRS_FLOAT_MULTI | CBRS_GRIPPER | CBRS_TOOLTIPS |  

    CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||  

    !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))  

{  

    TRACE0("Failed to create toolbar");  

    return -1;      // fail to create  

}  

m_wndToolBar.SetWindowText(_T("标准工具栏"));  

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);  

EnableDocking(CBRS_ALIGN_ANY);  

DockControlBar(&m_wndToolBar);

第二个工具栏:

if (!m_wndExtendBar.CreateEx(this, TBSTYLE_FLAT,  

    WS_CHILD | WS_VISIBLE | CBRS_TOP |  

    CBRS_FLOAT_MULTI | CBRS_GRIPPER | CBRS_TOOLTIPS |  

    CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||  

    !m_wndExtendBar.LoadToolBar(IDR_EXTEND_BAR))  

{  

    TRACE0(_T("Failed to create extend toolbar"));  

    return -1;  

}  

m_wndExtendBar.SetWindowText(_T("扩展工具栏"));  

m_wndExtendBar.EnableDocking(CBRS_ALIGN_ANY);  

CRect rect;  

m_wndExtendBar.GetWindowRect(&rect);  

rect.OffsetRect(1, 0);  

this->RecalcLayout();    //关键的一步,重新排列  

DockControlBar(&m_wndExtendBar, AFX_IDW_DOCKBAR_TOP, &rect);

注:第二个工具栏CreateEx必须写在第一个工具栏CreateEx之后,否则还是两行。

MFC并列显示多个工具栏(Toolbar)

到此,以上就是小编对于EnableDocking的问题就介绍到这了,希望介绍关于EnableDocking的4点解答对大家有用。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读