5,530
社区成员
发帖
与我相关
我的任务
分享
/*切换显示视图*/
void CMyGISApp::SwitchView(DWORD dwType)
{
CView* pNewView= NULL;
if(!m_lpDoc||!m_lpTVDoc||!m_lpVDoc)
return;
if(dwType == 1)
{
POSITION pos = m_lpDoc->GetFirstViewPosition();
while (pos != NULL)
{
CView* pView =m_lpDoc->GetNextView(pos);
if(pView->IsKindOf(RUNTIME_CLASS(CMyView1)))
{
pNewView = pView;
((CMainFrame*)m_pMainWnd)->m_wndBar1.ShowWindow(SW_SHOW);
((CMainFrame*)m_pMainWnd)->m_wndBar2.ShowWindow(SW_HIDE);
((CMainFrame*)m_pMainWnd)->m_wndBar3.ShowWindow(SW_SHOW);
break;
}
}
}
else if(dwType == 2)
{
POSITION pos = m_lpTVDoc->GetFirstViewPosition();
while (pos != NULL)
{
CView* pView =m_lpTVDoc->GetNextView(pos);
if(pView->IsKindOf(RUNTIME_CLASS(CMyView2)))
{
pNewView = pView;
((CMainFrame*)m_pMainWnd)->m_wndBar1.ShowWindow(SW_HIDE);
((CMainFrame*)m_pMainWnd)->m_wndBar2.ShowWindow(SW_SHOW);
((CMainFrame*)m_pMainWnd)->m_wndBar3.ShowWindow(SW_HIDE);
break;
}
}
}
else if(dwType == 3)
{
POSITION pos = m_lpVDoc->GetFirstViewPosition();
while (pos != NULL)
{
CView* pView =m_lpVDoc->GetNextView(pos);
if(pView->IsKindOf(RUNTIME_CLASS(CMyView3)))
{
pNewView = pView;
((CMainFrame*)m_pMainWnd)->m_wndBar1.ShowWindow(SW_HIDE);
((CMainFrame*)m_pMainWnd)->m_wndBar2.ShowWindow(SW_HIDE);
((CMainFrame*)m_pMainWnd)->m_wndBar3.ShowWindow(SW_HIDE);
break;
}
}
}
CView* pActiveView = ((CFrameWnd*) m_pMainWnd)->GetActiveView();
if(!pNewView || (pActiveView == pNewView))
{
return;
}
// Exchange view window IDs so RecalcLayout() works.
#ifndef _WIN32
UINT temp = ::GetWindowWord(pActiveView->m_hWnd, GWW_ID);
::SetWindowWord(pActiveView->m_hWnd, GWW_ID, ::GetWindowWord(pNewView->m_hWnd, GWW_ID));
::SetWindowWord(pNewView->m_hWnd, GWW_ID, temp);
#else
UINT temp = ::GetWindowLong(pActiveView->m_hWnd, GWL_ID);
::SetWindowLong(pActiveView->m_hWnd, GWL_ID, ::GetWindowLong(pNewView->m_hWnd, GWL_ID));
::SetWindowLong(pNewView->m_hWnd, GWL_ID, temp);
#endif
pActiveView->ShowWindow(SW_HIDE);
pNewView->ShowWindow(SW_SHOW);
((CFrameWnd*) m_pMainWnd)->SetActiveView(pNewView);
((CFrameWnd*) m_pMainWnd)->RecalcLayout();
pNewView->Invalidate();
return;
}