VC++6.0中FormView的运用 用appWizard生成的单文档结构的应用程序默认之支持一文档一个是的情况,你如要显示多个视图。可观看VC++栏目中的单文档多时问题的答案,里面有详细的解答。其中我的答案是用SwitchView()来切换。你若还有问题,可发E-mail跟我联系。我可以给你一个例程序。我的E-mail([email protected])。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这不就很简单吗?请看下面的代码在CSDIFrameWnd::OnCreateClient中加上 m_pSplitterView = new CSplitterView; m_pSplitterView->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this, VIEW_SPLITTER, pContext); SetActiveView(m_pSplitterView); m_pSplitterView->ShowWindow(SW_SHOW); m_pSplitterView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); m_nCurrentViewID = VIEW_SPLITTER; m_pListCtrlView = new CListCtrlView; ((CView*) m_pListCtrlView)->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this, VIEW_LISTCTRL, pContext); m_pListCtrlView->ShowWindow(SW_HIDE); m_pListCtrlView->SetDlgCtrlID(VIEW_LISTCTRL); m_pEditCtrlView = new CEditCtrlView; ((CView*) m_pEditCtrlView)->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this, VIEW_EDIT, pContext); m_pEditCtrlView->ShowWindow(SW_HIDE); m_pEditCtrlView->SetDlgCtrlID(VIEW_EDIT);m_pSplitterView,m_pEditCtrlView,m_pListCtrlView为分别不同的视,但要注意AFX_IDW_PANE_FIRST这个参数,要显示的那个视的ID就要设为它。例如切换视: CView* pOldActiveView = GetActiveView(); CView* pNewActiveView = NULL; switch (nView) { case VIEW_SPLITTER: pNewActiveView = (CView*) m_pSplitterView; break; case VIEW_LISTCTRL: pNewActiveView = (CView*) m_pListCtrlView; break; case VIEW_EDIT: pNewActiveView = (CView*) m_pEditCtrlView; break; } if (pNewActiveView) { // don't switch when views are the same if (pOldActiveView == pNewActiveView) return; SetActiveView(pNewActiveView); pNewActiveView->ShowWindow(SW_SHOW); pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); pOldActiveView->ShowWindow(SW_HIDE); pOldActiveView->SetDlgCtrlID(m_nCurrentViewID); m_nCurrentViewID = nView; RecalcLayout(); }还有记得把所有的视与你的CDocument相关联,CDocument::AddView 多谢二位的答复。我是刚刚接触VC++,如果JJONY回复在代码后加点说明,我想阅读将会更加方便。我将于panda_w的回复单独联系吧,我想他会给我教好的答复。再次感谢二位。 C++的未来 100分 为什么我VC程序的标题和图标如此诡异? 鼠标一直按下,拖动画图,鼠标消息如何组织?? 下载问题 给点意见,谢谢! 妹妹我向各位大哥哥提个问题???? 最近做了一个代码下载的网站,请大家多多支持!! 高手看过来,CHtmlView 在什么地方响应wm_paint 事件,我在源吗上看不到,viewhtml.cpp中也没有 MFC编写控件问题 五分题 CDC::SetWindowOrg()作用是什么? 急!如何锁定屏幕? 关于选择文件夹
在CSDIFrameWnd::OnCreateClient中加上
m_pSplitterView = new CSplitterView;
m_pSplitterView->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this, VIEW_SPLITTER, pContext);
SetActiveView(m_pSplitterView);
m_pSplitterView->ShowWindow(SW_SHOW);
m_pSplitterView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
m_nCurrentViewID = VIEW_SPLITTER; m_pListCtrlView = new CListCtrlView;
((CView*) m_pListCtrlView)->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this, VIEW_LISTCTRL, pContext);
m_pListCtrlView->ShowWindow(SW_HIDE);
m_pListCtrlView->SetDlgCtrlID(VIEW_LISTCTRL); m_pEditCtrlView = new CEditCtrlView;
((CView*) m_pEditCtrlView)->Create(NULL, NULL, 0L, CFrameWnd::rectDefault, this, VIEW_EDIT, pContext);
m_pEditCtrlView->ShowWindow(SW_HIDE);
m_pEditCtrlView->SetDlgCtrlID(VIEW_EDIT);m_pSplitterView,m_pEditCtrlView,m_pListCtrlView为分别不同的视,但要注意AFX_IDW_PANE_FIRST这个参数,要显示的那个视的ID就要设为它。例如切换视: CView* pOldActiveView = GetActiveView();
CView* pNewActiveView = NULL; switch (nView)
{
case VIEW_SPLITTER:
pNewActiveView = (CView*) m_pSplitterView;
break; case VIEW_LISTCTRL:
pNewActiveView = (CView*) m_pListCtrlView;
break;
case VIEW_EDIT:
pNewActiveView = (CView*) m_pEditCtrlView;
break;
} if (pNewActiveView)
{
// don't switch when views are the same
if (pOldActiveView == pNewActiveView) return; SetActiveView(pNewActiveView);
pNewActiveView->ShowWindow(SW_SHOW);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
pOldActiveView->ShowWindow(SW_HIDE);
pOldActiveView->SetDlgCtrlID(m_nCurrentViewID);
m_nCurrentViewID = nView; RecalcLayout();
}还有记得把所有的视与你的CDocument相关联,CDocument::AddView
说明,我想阅读将会更加方便。
我将于panda_w的回复单独联系吧,我想他会给我教好的答复。
再次感谢二位。