CControlBar::GetDockingFrame的一点问题

本文探讨了CControlBar::GetDockingFrame函数在MFC中的作用,特别是当工具栏以浮动窗口显示时如何保持其位置不变。通过孙鑫的MFC视频教程,了解到该函数用于获取控制条停靠的框架窗口,对于理解和实现浮动工具栏的显示与隐藏位置管理具有重要意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个函数的MSDN: http://msdn.microsoft.com/zh-cn/library/vstudio/41z5kzz8.aspx

今天看孙鑫的MFC视频第9课的浮动工具栏时,视频里有说当一个浮动窗口为一个独立的小窗口显示时,显示和隐藏后的位置不变,网上看到如下实现代码:

CRect rect;
	CFrameWnd* pParentFrame = m_newToolBar.GetDockingFrame();
	if (m_newToolBar.IsFloating())
	{
		pParentFrame->GetWindowRect(&rect);
	}
	if (m_newToolBar.IsWindowVisible())
	{
		m_newToolBar.ShowWindow(SW_HIDE);
	}
	else
	{
		m_newToolBar.ShowWindow(SW_SHOW);
	}
	RecalcLayout();
	DockControlBar(&m_newToolBar);
	if(!rect.IsRectEmpty())
	{
		FloatControlBar(&m_newToolBar,CPoint(rect.left,rect.top));
	}
上面代码中的GetDockingFrame我刚开始看不明白,我觉得这样是返回的主框架窗口的对象,怎么用它调用GetWindowRect获取的是工具栏的位置呢?后来看到下面片段( 出处)

"同时,CControlBar还定义了成员函数GetDockingFrame(),取得当前的所有者框架窗口(主框架窗口或为浮动弹出的简化框架窗口)"

原来当工具栏以浮动独立窗口显示时它就有独立的简化框架窗口了,所以GetDockingFrame的:调用该成员函数获取指向您的控制条停靠的当前框架窗口获取的当前框架窗口就是这个弹出的浮动简化框架窗口,而非主框架窗口

-------------------------------------

CFrameWnd::ShowControlBar这个函数直接显示和隐藏,并在原位置

杰笛窗口框架 Docking Framework 杰笛窗口框架提供了一个功能强大且简单易用的工具窗口解决方案,正如用户在Visual Studio .NET IDE或者Eclipse IDE看到的一样。如果您的应用程序很简单,可能没有什么必要使用这个产品。但是对于很多用户来说,应用程序里面可能有很多的工具窗口,用户希望根据他们的需求,选择显示一些窗口,隐藏其它的窗口,而对于显示的窗口,他们又希望可以随意调整它们的大小、位置和状态。在这个情况下,杰笛窗口框架就非常有用了。事实已经证明,杰笛窗口框架是针对有限屏幕空间和复杂窗口布局问题的最有效的解决方案。自2002年底发行以来,全世界众多公司都选择了我们的窗口框架来管理他们应用程序的窗口。毫无疑问,它是目前市场上现有的最好的工具窗口解决方案。 利用Swing即插的LookAndFeel技术,我们制作了几种风格的杰笛窗口框架。在当前发行的版本中包括了类似Office 2003、Office 2007、Visual Studio.NET、Eclipse、Aqua、Xerto和默认的Swing Metal的LookAndFeel。用户可以根据喜好选择自己最喜欢的风格。 功能介绍 工具窗的特性 支持拖放功能 不受限的Dockable Window嵌入层 窗口的自动隐藏 可调整窗口的自动隐藏 浮动的Dockable Window 最大化Dockable Window 带通知的Dockable Window 可隐藏的中央工作空间 支持heavyweight 组件(比如说Java3D、 JOGL、ActiveX组件) 多种风格 Office 2007 风格 Office 2003 风格 Visual Studio .NET 风格 Eclipse 风格 Metal 风格 Aqua 风格 Xerto 风格 布局保存 可以用Java自带的pref保存或者加载布局 可以用文件保存或者加载布局 可以用InputStream和OutputStream (输入流和输出流)保存或者加载布局 可以列出所有前面保存的的布局 可以随时更换布局
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值