CControlBar::GetDockingFrame的一点问题

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

这个函数的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这个函数直接显示和隐藏,并在原位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值