怎样在单文档中加载同一个类的界面不同的对话框?
现在我想在单文档中加载同一个类的界面不同的对话框,读入不同的参数数值,然后在视图中用函数调用这些参数,并在视图中显示结果.请问该怎么实现? 问题点数:0、回复次数:3Top
1 楼saucer(思归)回复于 2003-12-03 05:09:18 得分 0
Multiple Views Using SDI
http://www.codeguru.com/doc_view/ScreenSwitch.shtml
VSWAP Demos Multiple-View Switching in SDI
http://support.microsoft.com/default.aspx?kbid=141333
Top
2 楼broadoceans(broadoceans)回复于 2003-12-03 09:21:00 得分 0
主要是利用CDocument的AddView()和RemoveView()
BOOL CMainFrame::OnViewChange(UINT nCmdID)
{
CView* pViewAdd;
CView* pViewRemove;
CDocument* pDoc = GetActiveDocument();
UINT nCmdID;
nCmdID = LOWORD(GetCurrentMessage()->wParam);
if((nCmdID == ID_VIEW_VIEW1) && (m_currentView == 1))
return;
if((nCmdID == ID_VIEW_VIEW2) && (m_currentView == 2))
return;
if (nCmdID == ID_VIEW_VIEW2)
{
if (m_pView2 == NULL)
{
m_pView1 = GetActiveView();
m_pView2 = new CMyView2;
//Note that if OnSize has been overridden in CMyView2
//and GetDocument() is used in this override it can
//cause assertions and, if the assertions are ignored,
//cause access violation.
m_pView2->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW,
rectDefault, this, AFX_IDW_PANE_FIRST + 1, NULL);
}
pViewAdd = m_pView2;
pViewRemove = m_pView1;
m_currentView= 2;
}
else
{
pViewAdd = m_pView1;
pViewRemove = m_pView2;
m_currentView= 1;
}
// Set the child i.d. of the active view to AFX_IDW_PANE_FIRST,
// so that CFrameWnd::RecalcLayout will allocate to this
// "first pane" that portion of the frame window's client area
// not allocated to control bars. Set the child i.d. of the
// other view to anything other than AFX_IDW_PANE_FIRST; this
// examples switches the child id's of the two views.
int nSwitchChildID = pViewAdd->GetDlgCtrlID();
pViewAdd->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
pViewRemove->SetDlgCtrlID(nSwitchChildID);
// Show the newly active view and hide the inactive view.
pViewAdd->ShowWindow(SW_SHOW);
pViewRemove->ShowWindow(SW_HIDE);
// Connect the newly active view to the document, and
// disconnect the inactive view.
pDoc->AddView(pViewAdd);
pDoc->RemoveView(pViewRemove);
SetActiveView(pViewAdd);
RecalcLayout();
}
Top
3 楼wangweixing2000(星(inspiration(灵感)))回复于 2003-12-03 10:05:00 得分 0
上面已经很详细了!Top




