请教MDI的问题,高手请进100分,在线等,解决就结帖

developCpp 2005-09-27 02:46:26
我有几个文檔模板
定义如下:
class CXXXApp : public CWinApp
{
public:
CXXXApp();
CMultiDocTemplate* pDocTemplateOne;//模板一
CMultiDocTemplate* pDocTemplateTwo;//模板二
部分代码省略
}

BOOL CXXXApp::InitInstance()
{
部分代码省略
pDocTemplateOne = new CMultiDocTemplate(
IDR_SOFTWATYPE,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CChartFrame), // custom MDI child frame
RUNTIME_CLASS(CMyView));
AddDocTemplate(pDocTemplateOne);

pDocTemplateTwo = new CMultiDocTemplate(
IDR_SOFTWATYPE,
RUNTIME_CLASS(CMyDoc),
RUNTIME_CLASS(CListFrame), // custom MDI child frame
RUNTIME_CLASS(CMyList));
AddDocTemplate(pDocTemplateTwo);
部分代码省略
}

模仿文件新增功能的代码,创建一个子窗口
void CMainFrame::OnChildNewOne ()
{
// TODO: Add your command handler code here
CDocTemplate* pTemplate = ((CXXXApp*) AfxGetApp())->pDocTemplateOne;
ASSERT_VALID(pTemplate);

CFrameWnd* pFrame = pTemplate->CreateNewFrame(NULL, NULL);
if (pFrame == NULL)
{
return; // command failed
}
pTemplate->InitialUpdateFrame(pFrame, NULL);
}
问题如下:
以上代码会打开很多个相同模板的子窗口
怎样打开一个子窗口的时候,如果这种模板的子窗口已经打开,就Active,如果没有打开则创建一个呢????

在线等阿
谢谢
...全文
92 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
developCpp 2005-09-27
本人在MFC是新手
請大俠Helppppppp meeeeee
thanks
回复
developCpp 2005-09-27
同样类型的子窗口只允许打开一个
回复
developCpp 2005-09-27
还是不行喔
POSITION pos = pTemplate->GetFirstDocPosition();
pos始终是空
是不是因为我的拆分窗口的代码是
BOOL CListFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
if(!m_wndSplitter.CreateStatic(this,1,2)||
!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CListTree),CSize(200,0),pContext)||
!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CMyList),CSize(0,0),pContext))
return FALSE;
else
return TRUE;
}

沒有用
m_wndSplitter.CreateView(0,1, pContext->m_pNewViewClass
,CSize(0,0),pContext))
方法
是不是因为这个原因呢?
回复
teli_eurydice 2005-09-27
up
回复
goodboyws 2005-09-27
CDocTemplate* pTemplate = ((CXXXApp*) AfxGetApp())->pDocTemplateOne;
ASSERT_VALID(pTemplate);

POSITION pos = pTemplate->GetFirstDocPosition();
if (pos)
{
CDocument* pDoc = pTemplate->GetNextDoc(pos);
pos = pDoc->GetFirstViewPosition();
CView* pFirstView = GetNextView( pos );
if (pFirstView)
{
pFirstView->GetParentFrame()->ShowWindow(SW_SHOW);
return;
}
}
CFrameWnd* pFrame = pTemplate->CreateNewFrame(NULL, NULL);
if (pFrame == NULL)
{
return; // command failed
}
pTemplate->InitialUpdateFrame(pFrame, NULL);
回复
developCpp 2005-09-27
本人是新手
各位大俠幫幫忙
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHelpppppp
upupupupupupupu
To DentistryDoctor(My heart will fly,in the sky.)
在哪裡下載呢???
回复
developCpp 2005-09-27
可惜沒有哦
UUUUUUUUUUUUUUUUUUUPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
UPPPPPPPPPPPPPPP
UUUUUUUUp
回复
DentistryDoctor 2005-09-27
如果楼主手上有<MFC经典问答>一书就好了,它的第二章,讲这个讲得很详细。
回复
相关推荐
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-09-27 02:46
社区公告
暂无公告