📄 subject_33568.htm
字号:
<p>
序号:33568 发表者:fishsward 发表日期:2003-03-21 23:00:13
<br>主题:SDI/MDI,,Single/MultiDocTemplate完全辨析,对您绝对有益无害!!!!!!!!!
<br>内容:下面是我对SDI/MDI,,Single/MultiDocTemplate的一些理解和困惑,欢迎您发表自己的<BR>看法,谢谢<BR><BR>一。SDI一次只能打开一份document(与mutidoctemplate或者SingleDocTeplate无关)<BR> 为了显示这份document,必须配备以下内容:<BR> A。 相应的view(可以是多个,比如所切分视图)<BR> B。 相应的边框,其实就是mainframe<BR> C. 相应的IDR(比如说标题等<BR><BR>二。 MD1一次可以打开多个documents;<BR> A. 当这多个documents是不同类型时,每一类document必须配备相应的view<BR> 和边框(CMidChildwnd),至于怎么配置?由相应的DocTemplate来决定<BR> 啦!<BR> b。 当这多个documents是同一种类型时,只需配备一次即可。<BR> c。 程序中只有一份document,但是执行了window-》new window时,可以<BR> 打开第二个view,并且这个view也有一个边框midchlldwnd。<BR><BR>三。 SingleDocTeplate<BR> 只支持一种“类型”document,为该document指定view和边框以及IDR<BR>四。 MultiDocTemplate<BR> 可以支持多种“类型”documents,,并且为这'所有的多种类型'的doucument<BR> 指定'一套'相应的view,边框和IDR<BR><BR><BR> 好,这就是我的理解(欢迎您指出不对的地方),下面是我的疑惑:<BR> 我有两种类型的document,分别为mydoc1,mydoc2,我要指定它们的view和<BR> 边框为:viewAll,FrameAll,IDR<BR> <BR> 照理说,应该只需要一个multidoctemplate就可以了吧!!(也许真的<BR> 可以,因为MultiDocTemplate中就有一个CPtrList m_docList,请您告知小弟<BR> 具体办法)但是,几乎所有的书上都是采用的如下办法:<BR> <BR> <BR> CMultiDocTemplate *pDocTemplate;<BR> pDocTemplate=new CMultiDocTeplate(IDR,<BR> CRunTimeClass(mydoc1),<BR> CRunTimeClass(frameALL)<BR> CRunTimeClass(ViewAll)<BR> );<BR> addDocTemplate(pDocTemplate)<BR> <BR><BR> pDocTemplate=new CMultiDocTeplate(IDR,<BR> CRunTimeClass(mydoc2),<BR> CRunTimeClass(frameALL)<BR> CRunTimeClass(ViewAll)<BR> );<BR> addDocTemplate(pDocTemplate)<BR> <BR> 我想问,既然multidocment这么麻烦,<BR> 为什么不用singledoctemplate呢?(说实话,我不知道能不能用??)<BR> multidoctemplate的优越性在哪呢????????<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:思考者 回复日期:2003-03-22 05:49:24
<br>内容:尽管对于写程序的人来讲,多文档是比单文档要麻烦,对于客客户业来讲,多文档要方便一些,像word,等等一系列软件。都是多文档的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:fishsward 回复日期:2003-03-22 18:16:35
<br>内容:楼上的兄台,我只是想知道<BR>CMultiDocTeplate和singledoctemplate的区别,至于mdi和sdi,好像是另外一个概念!!!<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>
回复者:思考者 回复日期:2003-03-22 19:30:13
<br>内容:<BR><BR>你对单文档与多文档的理解,在我看来,都是正确的。故开始误会了你的意思。不过现在认真看一看,觉得你是有些理解有误的地方。对于MFC应用程序有单文档与多文档的选择。<BR><BR>其区别如下:<BR><BR>在单文档中:只初始化了一个文档对象和一个主框架对象,同时也只 初始化了一个视图对象。<BR>*******像一些操作如“New""Open"等 <BR>是在 唯一文档对象 已经初始化的情况下,只是改变文档对象的数据成员****<BR><BR>在多文档应用程序中:<BR><BR>可以定义并初始化多个文档对象和多个子框架对象,每个子框架类对象又能够初始建立一个视图对象。所以在多文档应用程序中,应用类,主框架类只初始化了一个对象,而视图类,文档类,子框架类则建立了多个对象,其中,文档类对象数目小于等于子框架类对象的数目,而子框架类对象数目与视图类对象数目相同。<BR><BR>现在说说你理解有误的地方:<BR> 最主要的是,加个“类型”这么个概念,如果要对照理解,就是,一类“类型”对应一个文档对象(及相应的其它对象)。即然你有两类不同类型的文件。当然要对应两个文档对象(及相应的其它对象。就如你上面的代码。<BR><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>
回复者:fishsward 回复日期:2003-03-22 23:55:39
<br>内容: to思考者 朋友:<BR> 谢谢您的回答,其实我一看到这个名字,就对您非常的敬佩!<BR> 不过,我的观点,还是和您不同。<BR> 首先,我想问您:您说的“单文档”是指的sdi,还是singledoctemplate?<BR>如果是前者,我想把侯sir的深入浅出mfc 中的一段 写出来:<BR> 第253页:mdi程序也可以用csingledoctemplate,sdi可以使用cmultidoctemplate<BR>(我同意侯sir的这种观点,不过我不知道,该怎么实现这两个“可以”)<BR> <BR><BR> 我个人的理解:程序是否支持多种“不同类型”的文档,与sdi和mdi无关,与<BR>singledoctemplate和multidoctemplate有关!!下面我还是用侯sir的原话来证明:<BR> 还是第253页 :csigledoctemlate一次只能打开一种文档类型,mdidoctemplate<BR>可以同时支持多种文档类型<BR><BR> 为什么mdidoctemaplate的功能比singledoctemplate“强大”呢??<BR>侯sir也给出了解释:<BR> <BR> 第347页 : 如果你使用csingledoctemplate,它有一个成员变量 <BR>cdocument m_pDocument,而cmultidocuplate 有一个成员变量:<BR>CPtrlist m_pdoclist,它表示能同时打开多个docments。<BR><BR> 所以,我认为,既然所有的事情,都被csingledocplate和cmultidocplate干了,<BR>那么sdi和mdi,还有什么意义呢??<BR> 可惜,侯sir似乎也没有很好的说明这个问题!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:fishsward 回复日期:2003-03-23 00:13:11
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -