在多文档程序中实现打开子窗口的功能遇到的问题 各位大虾,小弟欲编写一视频分析统计软件,想用多文档程序实现,刚上手就遇到问题了,首先是我如何能够实现如程序自带的“新建”菜单中的打开一个子窗口的功能;其次是我想实现打开不同类型的子窗口,如我有视频窗口,显示数据库的表格窗口,以及分析结果的图形窗口...。我自己已经琢磨了一阵子了,也没有得出满意的结果,望各位大虾指点,不甚感激! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Dynamically Create Different Views for SDI Projectshttp://www.codeguru.com/cpp/w-d/doc_view/viewmanagement/article.php/c6121/ 这个是多文档示例http://www.vckbase.com/document/viewdoc/?id=691 在应用程序类中调用OnFileNew函数。也可以直接调用文档模板类的OpenDocumentFile函数,第1参数给0。 第一个示例只是演示了动态创建不同的view,如果要同时显示多个view,MDI 更方便一些,建议用多文档 需要区分的是:1.sdi处理的是单文档,但是可以分为多个视图view,不同视图展示不同文档内容;2.mdi处理的是多个不同文档.典型例子有word,可以开多个窗口,每个窗口处理一个文档,但是,文档之间可以通过剪贴板交互. 想创建哪一套,就用哪个模板指针来调用OpenDocumentFile函数。模板指针可以作为成员变量保存在App类里面,也可以动态获取。 cnzdgs: 你好,能告知怎么动态获取吗,试了试还是没有搞明白,谢谢。 用App类的GetFirstDocTemplatePosition、GetNextDocTemplate函数可以获取所有模板指针。此外,用文档类的GetDocTemplate函数可以得到该文档所属的模板指针。 恕小弟愚钝,请看如下代码为何str的值总是为空(str = ""),谢谢了: CMultiDocTemplate* pVideoTemplate; pVideoTemplate = new CMultiDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CVideoDoc), RUNTIME_CLASS(CVideoFrame), RUNTIME_CLASS(CVideoView)); AddDocTemplate(pVideoTemplate);void CMainFrame::OpenVideoWnd(){ POSITION curTemplatePos = ((CTacAnalysisApp*)AfxGetApp())-> GetFirstDocTemplatePosition(); while(curTemplatePos != NULL) { CDocTemplate* curTemplate =((CTacAnalysisApp*)AfxGetApp())-> GetNextDocTemplate(curTemplatePos); CString str; curTemplate->GetDocString(str, CDocTemplate::docName); if (str == _T("Video")) { curTemplate->OpenDocumentFile(NULL); return; } } } 你的String Table资源中,IDR_MAINFRAME对应的内容是什么?GetDocString(str, CDocTemplate::docName)取的是第1个\n和第2个\n之间的内容。 CReBar使用问题 关于Web Browser 浏览器控件在原窗口中打开问题 请教一个关于进度条滞后的问题? 请问消息队列有大小吗? 关于WaitForSingleObject的问题 datagrid 内嵌组合框的定位问题(已经搞了3天了,大家帮帮忙吧,在线等) ¥¥¥¥¥¥¥¥¥¥ 有关坐标变换的一个问题 ¥¥¥¥¥¥¥¥¥¥ 请问VC高手 建立实模实MFC库的指令是???) 有谁知道将.exe文件的资源文件取出修改后再写入原来的程序,注意利用程序实现而非vc IDE编程环境 CSplitterWnd动态分割,不能用吗?是动态分割! 关于枚举用户信息 两个程序相互切的时候怎么会有白屏?
http://www.codeguru.com/cpp/w-d/doc_view/viewmanagement/article.php/c6121/
第一个示例只是演示了动态创建不同的view,如果要同时显示多个view,MDI 更方便一些,建议用多文档
1.sdi处理的是单文档,但是可以分为多个视图view,不同视图展示不同文档内容;
2.mdi处理的是多个不同文档.典型例子有word,可以开多个窗口,每个窗口处理一个文档,但是,文档之间可以通过剪贴板交互.
此外,用文档类的GetDocTemplate函数可以得到该文档所属的模板指针。
CMultiDocTemplate* pVideoTemplate;
pVideoTemplate = new CMultiDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CVideoDoc),
RUNTIME_CLASS(CVideoFrame),
RUNTIME_CLASS(CVideoView));
AddDocTemplate(pVideoTemplate);void CMainFrame::OpenVideoWnd()
{
POSITION curTemplatePos = ((CTacAnalysisApp*)AfxGetApp())->
GetFirstDocTemplatePosition(); while(curTemplatePos != NULL)
{
CDocTemplate* curTemplate =((CTacAnalysisApp*)AfxGetApp())->
GetNextDocTemplate(curTemplatePos); CString str; curTemplate->GetDocString(str, CDocTemplate::docName); if (str == _T("Video"))
{
curTemplate->OpenDocumentFile(NULL);
return;
}
}
}