求助实现MDI多文档程序运行默认打开多个对话框 界面 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种搜搜很多的,打开对话框跟打开视图类似的http://wgq837051.iteye.com/blog/851915 谢谢jacksonfan, 我网上也搜了,没有找到合适的啊,我按你提供的网址内容做 了, 那个的效果是 当点击新建 时,一次会出现2个文档。还不是我想要的。 谢谢jacksonfan, 我网上也搜了,没有找到合适的啊,我按你提供的网址内容做 了, 那个的效果是 当点击新建 时,一次会出现2个文档。还不是我想要的。变通一下,这只是一种思路,要弹出对话框,那就把视图换成对话框 你确定按照那么操作的?我测试过了,可以启动时就打开多个,不需任何操作郁闷啊,我真的是按那上面做的,步骤写的还挺详细的。可是结果出来就是 点新建 后 一次弹出来2个文档。我又试了一次,还是没有你说的效果.能把你的代码给我看看吗?谢谢了。[email protected]1.在App类中创建两个public变量: //这一步直接添加,没有问题。CMultiDocTemplate * m_pDocTemplate;CMultiDocTemplate * m_pNewDocTemplate;2.在App类中的Initlnstance()函数中添加以后程序: //这一步,把相应的类名改成自已的,IDR也换成自已的m_pDocTemplate = new CMultiDocTemplate( IDR_MULTIDTYPE, RUNTIME_CLASS(CMultiDocumentStudyDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CMultiDocumentStudyView)); AddDocTemplate(m_pDocTemplate); //CMultiDocTemplate * pNewDocTemplate; m_pNewDocTemplate = new CMultiDocTemplate( IDR_MULTIDTYPE, RUNTIME_CLASS(CMultiDocumentStudyDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CNewView)); AddDocTemplate(m_pNewDocTemplate);3.重载OnFileNew函数(App类中),默认只打开一个视图: //这一步 也没啥 问题m_pDocTemplate->OpenDocumentFile(NULL);4.在Doc类中重载OnNewDocument()函数 //这一步也没啥 问题, 在OnNewDocument函数中加上这2句。 CMultiDocumentStudyApp*p_app = (CMultiDocumentStudyApp*)AfxGetApp(); EkCreateNewWindow(p_app->m_pNewDocTemplate, this ); // 在自 已对应的Doc类中添加这个函数。CFrameWnd* CMultiDocumentStudyDoc::EkCreateNewWindow( CDocTemplate* pTemplate,CDocument* pDocument ){ ASSERT_VALID( pTemplate ); ASSERT_VALID( pDocument ); CFrameWnd* pFrame = pTemplate->CreateNewFrame(pDocument, NULL ); CRect rect; GetClientRect(pFrame->m_hWnd,&rect); pFrame->MoveWindow(100,150,rect.Width(),rect.Height()); if( pFrame == NULL ) {TRACE0( "Warning: failed to create new frame.\n" ); return NULL; } ASSERT_KINDOF( CFrameWnd, pFrame ); pTemplate->InitialUpdateFrame( pFrame, pDocument ); return pFrame; } 3.重载OnFileNew函数(App类中),默认只打开一个视图: //这一步 也没啥 问题m_pDocTemplate->OpenDocumentFile(NULL);这一步你怎么操作的?我测试的是加这一个会有2个视图,再加上另外一个m_pNewDocTemplate->OpenDocumentFile(NULL);会有4个视图 APP类右键,选择“添加消息响应”-选择ID_FILE_NEW 谢谢jacksonfan的耐心指导,并且还给我做了个示例。 m_pNewDocTemplate = new CMultiDocTemplate( IDR_TestFormTYPE, RUNTIME_CLASS(CTestFormDoc), RUNTIME_CLASS(CChildFrame), // custom MDI child frame RUNTIME_CLASS(CTestFormView)); //AddDocTemplate(m_pNewDocTemplate);我仔细检查了下代码,没有发现有哪不一样,后来又试一试把所有的AddDocTemplate(m_pNewDocTemplate); 都 注掉 ,这次就是直接显示多个文档了。可是我看你提供给我的例子上面 带了 AddDocTemplate函数 的,也没出现我的这个问题啊!比较奇怪。 请教编程赛事的相关消息! CTreeCtrl排序问题 网络版ffmpeg解码的问题 向数据库表中写数据要求保留2位小数??? 我想写一个在局域网内根据任意计算机名获得该计算机的MAC地址,该怎么写?谢谢 征求视频用ffdshow压缩后存盘并发送的方案 请问怎么设置哪个窗口为启动窗口啊 用socket API怎么实现CSocket类的Onrecieve等功能,最好有个例子 谁了解dicom的请进~ 学VC好难! 急诊++++++ 怎么实现软件重启功能? GetCurrentProcess 伪句柄有什么用?请详细举例
http://wgq837051.iteye.com/blog/851915
谢谢jacksonfan,
我网上也搜了,没有找到合适的啊,
我按你提供的网址内容做 了, 那个的效果是 当点击新建 时,一次会出现2个文档。
还不是我想要的。
谢谢jacksonfan,
我网上也搜了,没有找到合适的啊,
我按你提供的网址内容做 了, 那个的效果是 当点击新建 时,一次会出现2个文档。
还不是我想要的。变通一下,这只是一种思路,要弹出对话框,那就把视图换成对话框
你确定按照那么操作的?
我测试过了,可以启动时就打开多个,不需任何操作郁闷啊,我真的是按那上面做的,步骤写的还挺详细的。
可是结果出来就是 点新建 后 一次弹出来2个文档。
我又试了一次,还是没有你说的效果.
能把你的代码给我看看吗?谢谢了。
[email protected]
1.在App类中创建两个public变量: //这一步直接添加,没有问题。
CMultiDocTemplate * m_pDocTemplate;
CMultiDocTemplate * m_pNewDocTemplate;
2.在App类中的Initlnstance()函数中添加以后程序: //这一步,把相应的类名改成自已的,IDR也换成自已的
m_pDocTemplate = new CMultiDocTemplate(
IDR_MULTIDTYPE,
RUNTIME_CLASS(CMultiDocumentStudyDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CMultiDocumentStudyView));
AddDocTemplate(m_pDocTemplate);
//CMultiDocTemplate * pNewDocTemplate;
m_pNewDocTemplate = new CMultiDocTemplate(
IDR_MULTIDTYPE,
RUNTIME_CLASS(CMultiDocumentStudyDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CNewView));
AddDocTemplate(m_pNewDocTemplate);
3.重载OnFileNew函数(App类中),默认只打开一个视图: //这一步 也没啥 问题
m_pDocTemplate->OpenDocumentFile(NULL);
4.在Doc类中重载OnNewDocument()函数 //这一步也没啥 问题, 在OnNewDocument函数中加上这2句。
CMultiDocumentStudyApp*p_app = (CMultiDocumentStudyApp*)AfxGetApp();
EkCreateNewWindow(p_app->m_pNewDocTemplate, this );
// 在自 已对应的Doc类中添加这个函数。
CFrameWnd* CMultiDocumentStudyDoc::EkCreateNewWindow( CDocTemplate* pTemplate,CDocument* pDocument )
{
ASSERT_VALID( pTemplate );
ASSERT_VALID( pDocument );
CFrameWnd* pFrame =
pTemplate->CreateNewFrame(pDocument, NULL );
CRect rect;
GetClientRect(pFrame->m_hWnd,&rect);
pFrame->MoveWindow(100,150,rect.Width(),rect.Height());
if( pFrame == NULL )
{TRACE0( "Warning: failed to create new frame.\n" );
return NULL;
}
ASSERT_KINDOF( CFrameWnd, pFrame );
pTemplate->InitialUpdateFrame( pFrame, pDocument );
return pFrame;
}
m_pDocTemplate->OpenDocumentFile(NULL);
这一步你怎么操作的?
我测试的是加这一个会有2个视图,再加上另外一个
m_pNewDocTemplate->OpenDocumentFile(NULL);会有4个视图
IDR_TestFormTYPE,
RUNTIME_CLASS(CTestFormDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CTestFormView));
//AddDocTemplate(m_pNewDocTemplate);我仔细检查了下代码,没有发现有哪不一样,
后来又试一试把所有的AddDocTemplate(m_pNewDocTemplate); 都 注掉 ,这次就是直接显示多个文档了。
可是我看你提供给我的例子上面 带了 AddDocTemplate函数 的,也没出现我的这个问题啊!比较奇怪。