CControlBar::GetDockingFrame的一点问题

来源:互联网 发布:win10 centos 双系统 编辑:程序博客网 时间:2024/05/19 04:51

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

原创粉丝点击