⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_62960.htm

📁 vc
💻 HTM
字号:
<p>
序号:62960 发表者:编编编 发表日期:2003-11-30 12:56:30
<br>主题:CFORMVIEW类???
<br>内容:我想设计一个多文档的程序,在APPWIZARD的第6部我使用基类为CFORMVIEW类。也就是我希望我的所有视图都是对话框样式的,问题是生成的程序只有一个FORM,如果我希望在菜单中能分别调用不同的的FORM,这样的程序我应该如何设计。 
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:浪际天涯 回复日期:2003-11-30 15:04:07
<br>内容:在资源里再创建一个对话框,new一个基于 CFormView的类,把对话框绑定到这个类上。
<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>回复者:红苹果 回复日期:2003-11-30 21:44:50
<br>内容:下面的函数可以在SDI程序中切换视:<BR>CView * CMainFrame::SwitchToForm( int nCmdID )<BR>{<BR>&nbsp;&nbsp;CView* pOldActiveView = GetActiveView();<BR>&nbsp;&nbsp;if (nCmdID == m_nCurrentView)<BR>&nbsp;&nbsp;&nbsp;&nbsp;return pOldActiveView;&nbsp;&nbsp;// already selected<BR><BR>&nbsp;&nbsp;::SetWindowLong(pOldActiveView-&gt;m_hWnd, GWL_ID, m_nCurrentView);<BR><BR>&nbsp;&nbsp;CRuntimeClass* pNewViewClass;<BR>&nbsp;&nbsp;switch (nCmdID)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;case IDW_IMAGE_VIEW: // 自己定义的常量,代表我自己的三个视类<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNewViewClass = RUNTIME_CLASS(CMIRImageView);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;case IDW_ENHANCE_VIEW:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNewViewClass = RUNTIME_CLASS(EnhanceView);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;case IDW_MEASURE_VIEW:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pNewViewClass = RUNTIME_CLASS(CMeasureView);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;default:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return pOldActiveView;<BR>&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;// create the new view<BR>&nbsp;&nbsp;CCreateContext context;<BR>&nbsp;&nbsp;context.m_pNewViewClass = pNewViewClass;<BR>&nbsp;&nbsp;context.m_pCurrentDoc = GetActiveDocument();<BR>&nbsp;&nbsp;CView* pNewView = STATIC_DOWNCAST(CView, CreateView(&amp;context));<BR>&nbsp;&nbsp;if (pNewView != NULL)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp; // the new view is there, but invisible and not active...<BR>&nbsp;&nbsp;&nbsp;&nbsp; pNewView-&gt;OnInitialUpdate();<BR>&nbsp;&nbsp;&nbsp;&nbsp; pNewView-&gt;ShowWindow(SW_SHOW);<BR>&nbsp;&nbsp;&nbsp;&nbsp; SetActiveView(pNewView);<BR>&nbsp;&nbsp;&nbsp;&nbsp; RecalcLayout();<BR>&nbsp;&nbsp;&nbsp;&nbsp; m_nCurrentView = nCmdID;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp; // finally destroy the old view...<BR>&nbsp;&nbsp;&nbsp;&nbsp; pOldActiveView-&gt;DestroyWindow();<BR>&nbsp;&nbsp;&nbsp;&nbsp; return pNewView;&nbsp;&nbsp;// already selected<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; return pOldActiveView;&nbsp;&nbsp;// already selected<BR>}<BR>如有疑问,可以参看MSDN中的MFC例子程序enroll的step4.<BR>2003-11-30 21:51:34

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -