单文档应用程序

阳澄居士 2008-06-12 12:06:52
我要做一个界面,单文档应用程序,去掉主菜单,做成切分窗口,左边窗口是formview类视图,在上面做一些按钮,要求,点击一个按钮,右边窗口切换一个formview类的视图窗口。切分窗口我已经做好,就是不知道如何通过按钮来切换视图
...全文
199 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
阳澄居士 2008-06-16
  • 打赏
  • 举报
回复
谢谢 !
冷月清晖 2008-06-12
  • 打赏
  • 举报
回复
参考:

/*切换显示视图*/
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;
}

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧