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>//&nbsp;&nbsp;&nbsp;&nbsp;if (!CDocument::OnOpenDocument(lpszPathName))<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CView* pView;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDemoView* pDemoView;<BR>&nbsp;&nbsp;&nbsp;&nbsp;POSITION pos=GetFirstViewPosition();<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(pos!=NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pView=GetNextView(pos);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(pView-&gt;IsKindOf(RUNTIME_CLASS(CDemoView)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pDemoView =(CDemoView* ) pView;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>pDemoView-&gt;m_proccess.SetRange(0,100);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>}<BR><BR>在pDemoView-&gt;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>&nbsp;&nbsp;&nbsp;&nbsp;CMultiDocTemplate* pDocTemplate;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDocTemplate = new CMultiDocTemplate(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDR_DEMOTYPE,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RUNTIME_CLASS(CDemoDoc),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RUNTIME_CLASS(CChildFrame), // custom MDI child frame<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RUNTIME_CLASS(CDemoView));<BR>&nbsp;&nbsp;&nbsp;&nbsp;AddDocTemplate(pDocTemplate);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CMultiDocTemplate* pDocTemplate1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDocTemplate1 = new CMultiDocTemplate(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDR_FOLDERTYPE,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RUNTIME_CLASS(CFolderDoc),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RUNTIME_CLASS(CFolderChildFrame), // custom MDI child frame<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RUNTIME_CLASS(CFolderView));<BR>&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;CMultiDocTemplate* pDocTemp = theApp.m_pDemoTemplate;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDemoDoc* pDoc = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;BOOL bNew = FALSE;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;POSITION posDoc = pDocTemp-&gt;GetFirstDocPosition();<BR>&nbsp;&nbsp;&nbsp;&nbsp;if (posDoc) // 文档已存在<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDoc = (CDemoDoc *)(pDocTemp-&gt;GetNextDoc(posDoc));<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CWaitCursor waitCursor;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDoc = (CDemoDoc *)pDocTemp-&gt;OpenDocumentFile(lpszFileName); // ※主要的<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bNew = TRUE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;if (pDoc)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POSITION posView = pDoc-&gt;GetFirstViewPosition();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CView* pView = pDoc-&gt;GetNextView(posView);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CFrameWnd *pFrame = pView-&gt;GetParentFrame();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// show window<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (bNew)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFrame-&gt;ShowWindow(SW_SHOW);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (pFrame-&gt;GetStyle() &amp; WS_MINIMIZE)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFrame-&gt;ShowWindow(SW_RESTORE);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pFrame-&gt;ActivateFrame();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR><BR>提示:<BR>前提是你必须在CMyWinApp中为两个文档类型准备两个成员。<BR>CMultiDocTemplate* m_pDemoTemplate;<BR>CMultiDocTemplate* m_pFolderTemplate;<BR><BR>并用下面<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_pDemoTemplate = new CMultiDocTemplate(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IDR_DEMOTYPE,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RUNTIME_CLASS(CDemoDoc),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RUNTIME_CLASS(CChildFrame), // custom MDI child frame<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RUNTIME_CLASS(CDemoView));<BR>&nbsp;&nbsp;&nbsp;&nbsp;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 + -
显示快捷键?