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