大家好,今天小热关注到一个比较有意思的话题,就是关于EnableDocking的问题,于是小编就整理了4个相关介绍EnableDocking的解答,让我们一起看看吧。
文章目录:
- CFrameWnd管理控制条
- mfc 禁止菜单栏移动,工具栏变到菜单栏上面
- 在mfc对话框工程中,如何使用CDockablePane。另外,在单文档工程中,能否...
- 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,注:第二个工具栏CreateEx必须写在第一个工具栏CreateEx之后,否则还是两行。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);
MFC并列显示多个工具栏(Toolbar)
到此,以上就是小编对于EnableDocking的问题就介绍到这了,希望介绍关于EnableDocking的4点解答对大家有用。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。