请教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,如果没有打开则创建一个呢????

在线等阿
谢谢
...全文
122 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
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经典问答>一书就好了,它的第二章,讲这个讲得很详细。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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