如何在MDI中使用独立(没有使用CMultiDocTemplate注册)的CView?
请教诸位高手一个问题!
一个程序使用mdi结构,我要使用多个单独的view,这些view没有相应的doc,我使用一个列表控件来控制view的显示,同一个view类型只能显示一个窗口,即点击listctrl中的相应的view名称时,如果这个类型的view已经有一个窗口在显示,那么激活这个窗口,否则创建一个新的frame和相应的view
我先是从mfc的例子collect中抄了一段代码,后来运行的时候才发现这段代码只能用于sdi结构:
long CMainFrame::NavView(long lId)
{
// create the new view
CCreateContext context;
context.m_pNewViewClass = theApp.GetViewClassById(m_aryFunc[lId].m_lType);//获得RUNTIME_CLASS
if(!context.m_pNewViewClass){
return -1;
}
context.m_pCurrentDoc = GetActiveDocument();
CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&context));
if (pNewView != NULL)
{
// the new view is there, but invisible and not active...
pNewView->ShowWindow(SW_SHOW);
pNewView->SendMessage(WM_SET_VINFO,0,(LPARAM)&m_aryFunc[lId]);//发送参数
pNewView->OnInitialUpdate();
SetActiveView(pNewView);
RecalcLayout();
return 0;
}
return -1;
}
我的问题是:在mdi结构下怎样得到这样的功能?
问题点数:20、回复次数:2Top
1 楼noneone(noneone)回复于 2004-12-04 10:42:05 得分 0
帮忙解答一下吧!非常急,进展不下去了Top
2 楼EnochShen(小疯子:真的好菜—知耻而后勇!)回复于 2004-12-04 11:33:38 得分 20
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(
IDR_MAINTYPE,
RUNTIME_CLASS(CMainDoc),
RUNTIME_CLASS(CChildFrame),
RUNTIME_CLASS(//CYOURVIEW));
pDocTemplate->OpenDocumentFile(NULL);
Top




