subject_26248.htm
来自「一些关于vc的问答」· HTM 代码 · 共 72 行
HTM
72 行
<p>
序号:26248 发表者:cmoth 发表日期:2002-12-30 14:27:54
<br>主题:如何从一个视图中打开一个新视图?
<br>内容:我现在有一个MDI程序,注册了两种文档类型,我现在想在第一种文档视图中点击一个按钮获得一个特定的文件名,然后创建一个新的第二种视图窗口,在其中打开这个文件,应该在什么函数中接受传进来的文件名?<BR>请各位大虾帮忙看看啊,如果有类似的例子就更好了,先谢谢啦。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:nik 回复日期:2002-12-30 15:34:01
<br>内容:CDocTemplate::OnOpenDocument(LPCTSTR lpszPathName);
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:cmoth 回复日期:2002-12-30 17:16:28
<br>内容:nik:<BR>代码如下<BR><BR>BOOL CDemoDoc::OnOpenDocument(LPCTSTR lpszPathName) <BR>{<BR>//AfxMessageBox("gjgjgj");<BR>// if (!CDocument::OnOpenDocument(lpszPathName))<BR>// return FALSE;<BR><BR> CView* pView;<BR> CDemoView* pDemoView;<BR> POSITION pos=GetFirstViewPosition();<BR> while(pos!=NULL)<BR> {<BR> pView=GetNextView(pos);<BR> if(pView->IsKindOf(RUNTIME_CLASS(CDemoView)))<BR> pDemoView =(CDemoView* ) pView;<BR> }<BR>pDemoView->m_proccess.SetRange(0,100);<BR> return TRUE;<BR>}<BR><BR>在pDemoView->m_proccess.SetRange(0,100);一句出错,我调了一下,pDemoView是有效的,但m_proccess(一个进度条控件,DDX_Control)是NULL,pDemoView继承自CFormView,这是怎么回事?难道formview和它的控件不是在一起初始化的?<BR><BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:cmoth 回复日期:2002-12-31 09:18:57
<br>内容:没人知道吗?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:cmoth 回复日期:2002-12-31 11:03:31
<br>内容:对面的高手看过来,这里的问题很无奈....
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:cmoth 回复日期:2002-12-31 11:18:36
<br>内容:从前有座山....
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:nik 回复日期:2002-12-31 12:52:34
<br>内容:你是有两个文档,还是一个文档有两个视图啊?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:cmoth 回复日期:2002-12-31 13:00:15
<br>内容:lasfox:<BR><BR>这是我注册文档模版的代码:<BR> CMultiDocTemplate* pDocTemplate;<BR> pDocTemplate = new CMultiDocTemplate(<BR> IDR_DEMOTYPE,<BR> RUNTIME_CLASS(CDemoDoc),<BR> RUNTIME_CLASS(CChildFrame), // custom MDI child frame<BR> RUNTIME_CLASS(CDemoView));<BR> AddDocTemplate(pDocTemplate);<BR> <BR> CMultiDocTemplate* pDocTemplate1;<BR> pDocTemplate1 = new CMultiDocTemplate(<BR> IDR_FOLDERTYPE,<BR> RUNTIME_CLASS(CFolderDoc),<BR> RUNTIME_CLASS(CFolderChildFrame), // custom MDI child frame<BR> RUNTIME_CLASS(CFolderView));<BR> AddDocTemplate(pDocTemplate1);<BR><BR>我现在想点击CFolderView中的一个按钮打开一个CDemoView....<BR>该怎么做呢??
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:nik 回复日期:2002-12-31 13:34:09
<br>内容:你可以为CDemoDoc创建一个Static Member Function,如:static CDemoDoc::CreateDoc();<BR>void CQuoteDoc::CreateDoc(LPCSTR lpszFileName)<BR>{<BR> CMultiDocTemplate* pDocTemp = theApp.m_pDemoTemplate;<BR> CDemoDoc* pDoc = NULL;<BR> BOOL bNew = FALSE;<BR><BR> POSITION posDoc = pDocTemp->GetFirstDocPosition();<BR> if (posDoc) // 文档已存在<BR> pDoc = (CDemoDoc *)(pDocTemp->GetNextDoc(posDoc));<BR> else<BR> {<BR> CWaitCursor waitCursor; <BR> pDoc = (CDemoDoc *)pDocTemp->OpenDocumentFile(lpszFileName); // ※主要的<BR> bNew = TRUE;<BR> }<BR><BR> if (pDoc)<BR> {<BR> POSITION posView = pDoc->GetFirstViewPosition();<BR> CView* pView = pDoc->GetNextView(posView);<BR> CFrameWnd *pFrame = pView->GetParentFrame();<BR> <BR> // show window<BR> if (bNew)<BR> pFrame->ShowWindow(SW_SHOW); <BR> else<BR> {<BR> if (pFrame->GetStyle() & WS_MINIMIZE)<BR> pFrame->ShowWindow(SW_RESTORE);<BR> pFrame->ActivateFrame();<BR> }<BR> }<BR>}<BR><BR>提示:<BR>前提是你必须在CMyWinApp中为两个文档类型准备两个成员。<BR>CMultiDocTemplate* m_pDemoTemplate;<BR>CMultiDocTemplate* m_pFolderTemplate;<BR><BR>并用下面<BR> m_pDemoTemplate = new CMultiDocTemplate(<BR> IDR_DEMOTYPE,<BR> RUNTIME_CLASS(CDemoDoc),<BR> RUNTIME_CLASS(CChildFrame), // custom MDI child frame<BR> RUNTIME_CLASS(CDemoView));<BR> AddDocTemplate(m_pDemoTemplate);<BR>替换原来的。<BR><BR>※这个方法也许不是最好的,但可以工作。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:nik 回复日期:2002-12-31 13:37:46
<br>内容:对了,然后在当你点击按钮的时候,调用<BR>CDemoDco::CreateDoc(lpszFileName);即可
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:cmoth 回复日期:2002-12-31 14:39:40
<br>内容:lasfox:<BR>改了以后,还是在那一句出错,文件名能传进来,但进度条控件始终为NULL,我想使不是和FormView有关?<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:nik 回复日期:2002-12-31 14:48:05
<br>内容:你要不把代码发过来我看看, lasfox@163.com
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?