重载的虚拟函数
BOOL CMainFrame::OnCloseDockingPane(CDockablePane* pWnd)
{
// TODO: 在此添加专用代码和/或调用基类
iShow=TRUE;
// return TRUE;
return CMDIFrameWndEx::OnCloseDockingPane(pWnd);
}
重载的虚拟函数
BOOL CMainFrame::OnCloseMiniFrame(CPaneFrameWnd* pWnd)
{
// TODO: 在此添加专用代码和/或调用基类
//处理关闭事件
CWnd* pwnd = pWnd->GetPane();
if(pwnd->IsKindOf(RUNTIME_CLASS(CTabbedPane)))//多个窗口
{
CTabbedPane* tabpane = (CTabbedPane *)pwnd;
CMFCBaseTabCtrl* pTabWnd = tabpane->GetUnderlyingWindow();
//关闭所有的面板
for(int i=0;i<pTabWnd->GetTabsNum();i++)
{
CDockablePane* pBar = DYNAMIC_DOWNCAST(CDockablePane, pTabWnd->GetTabWnd(i));
if (pBar != NULL)
{
ASSERT_VALID(pBar);
//将关闭消息加入该DockPane队列,等待完成本函数后关闭
::PostMessageA(pBar->m_hWnd ,WM_CLOSE, 0 , 0);
}
}
}
else{ //单个窗口
CDockablePane* pane = (CDockablePane *)pwnd;
if(pane->IsKindOf(RUNTIME_CLASS(CDockablePane)) || pane->IsKindOf(RUNTIME_CLASS(CPane)) && pane->IsKindOf(RUNTIME_CLASS(CPaneFrameWnd)))
{
//将关闭消息加入该DockPane队列,等待完成本函数后关闭
::PostMessageA(pWnd->GetPane()->m_hWnd ,WM_CLOSE, 0 , 0);
}
}
iShow=TRUE;
return TRUE;
// return CMDIFrameWndEx::OnCloseMiniFrame(pWnd);
}
//工具栏按钮函数
void CMainFrame::OnClosePance()
{
// TODO: 在此添加命令处理程序代码
if(!iShow)
{
iShow=TRUE;
m_wndProperties.ShowPane(FALSE,FALSE,FALSE);
}
else if(m_wndProperties.GetSafeHwnd())
{
iShow=FALSE;
m_wndProperties.ShowPane(TRUE,FALSE,TRUE);
}
else
{
BOOL bNameValid;
CString strPropertiesWnd;
ASSERT(bNameValid);
if (!m_wndProperties.Create(strClassView, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_PROPERTIESWND,
WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT |CBRS_FLOAT_MULTI ))
{
TRACE("未能创建%s窗口\n" ,strClassView);
return ;
}
m_wndProperties.EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndProperties);
iShow=FALSE;
}
RecalcLayout();
}