📄 105152.html
字号:
ActiveDoc程序还能够创建一个基本的容器文件。你需要做的工作只是用
Insert/Object命令给当前文档加入一个已有的对象。你可以将该文件保存到磁盘中。现在试着创建一个容器文件,以便能用Internet
Explorer测试应用程序框架。确保已插入了一个对象,然后保存文件,否则打开文档时将什么也看不见。该例使用ColorBlk.
BMP作为对象;而文件本身保存为TESTDOC.AXD。一旦你创建了测试文档,就应该创建一个HTML页面来测试它。程序列表11.2显示了该例使用
的代码。<br>
<img src="105152_files/20061021231250448.JPG" height="569" width="644"><br>
<img src="105152_files/20061021231252509.JPG" height="444" width="551"><br>
既然我们已经有了一个测试基础,那么让我们看一下应用程序的工作情况。在Internet
Explorer中打开Web测试页,然后单击测试链接。你看到的是在InternetExplorer中我们的测试应用程序的一个副本,如图11.6所
示,就如同在Word forWindows中工作时一样。请注意示例应用程序已经接管了浏览器的菜单和工具栏,就如同在Word for
Windows文档中一样。另外,使用菜单可以插入新对象,还可以执行其它任务,就好象应用程序是在本地文档中工作一样。你还可以使用Web
Publishing Wizard(本章前面已详细介绍过它)来保存这些修改。<br>
<img src="105152_files/20061021231253110.JPG" height="252" width="740"><br>
注释 如果一切正常,系统会显示一个对话框,询问是保存还是打开文件(当然假定你在前面的会话中没有关掉对话框)。一定要告诉浏览器是打开文件,这样才能真正浏览它。<br>
<strong>转换现存的应用程序 </strong><br>
如果你有一个非常出色的应用程序,但它却不支持ActiveDocument,请别担心,只要稍微做点
工作就能将它转换成能够提供这种支持的应用程序了──至少比从头开始重写该程序要省事多了。下面就将介绍转换过程的5个步骤。如下所述,你可以利用它将任
何一个已有的OLE服务器转换为基本的ActiveDocument服务器。不过要记住只能提供基本的支持。某些应用程序会和这个例子一样工作正常,有些
却不行。在开始加入支持项之前,应再花点时间去看看本章“ActiveDocument结构概述”一节并记下要点。做完附加的支持工作后,一定要用实际的
Internet环境而不是本地驱动器来测试它们。这样做能保证测试所有接口,并且保证应用程序不会因为使用了标准的OLE接口,而没有使用你真正想测试
的ActiveDocument接口来工作。<br>
<strong>步骤1:实现所需的类 </strong><br>
首先并且最明显的一步是实现创建ActiveX文档服务器所需的类。如果你比较一下前面创建的例子和其
它C++
4.2版之前的应用程序,就会注意到声明类的方式有点不同。这是因为Microsoft已经从原来的MFC类中导出了许多子类,并且给它们加入了一些功
能。表11.6列出了哪些类作了修改以及作了什么修改。第一列是在C++
4.2版之前的应用程序中使用的类声明。第二列是现在的声明。第三列告诉你影响了哪些文件。第四列则是在以前MFC
类文件中可能会发现的另外的类声明──它们是基于Microsoft Office Binder声明。<br>
<img src="105152_files/20061021231253486.JPG" height="212" width="730"><br>
<img src="105152_files/20061021231255236.JPG" height="229" width="733"><br>
在头文件中替换了这些声明后,你还需要在相应的 CPP 文件中替换它们。利用Microsoft
Developer的检索和替换功能会使工作变得容易一点。你不必担心会漏掉使用新类名的地方,在你做完头文件中的修改后,编译器会自动指出不一致的地
方。所以必须先做头文件修改并且在往下做之前好好检查。(注意,如果你想用ActiveX
SDK和老的MFC文件集来实现ActiveDocument服务器,那么必须修改三个头文件,而如果用Visual C++
4.2以上版本只需要修改两个头文件)。<br>
<strong>步骤2:添加一个简单的声明 </strong><br>
第二步是给应用程序的STDAFX.H文件中添加一个简单的声明:<br>
#include<afxdocob.h><br>
该头文件包含了使应用程序支持文档对象所需要的所有声明。实际上,略微看看该文件就很有启发,因为它准确地声明了四个ActiveDocument接口元素是怎样实现的。<br>
步骤3:修改注册表项 <br>
第三步是修改你使用注册表项的方式。你正在创建的应用程序已不再仅仅是一个在位(In-place)服
务器,所以需要在CWinApp.CPP文件(本例是ActivDoc.CPP
文件)中修改注册表项,把OAT_INPLACE_SERVER改为OAT_DOC_OBJECT_SERVER。代码如下所示:<br>
m_server.UpdateRegistry(OAT_DOC_OBJECT_SERVER);<br>
<strong>步骤4:修改语法分析映射(Parse Map) </strong><br>
第四步是修改某些语法分析映射,因为必须让应用程序知道将打印命令和其它
OLE相关信息送往何处。此时你需要对两个文件进行修改。第一个是应用程序文档头文件,本例中即为ActivDocDoc.H。你必须加入下列代码行:<br>
<img src="105152_files/20061021231256578.JPG" height="205" width="685"><br>
<img src="105152_files/20061021231256648.JPG" height="61" width="286"><br>
如果消息映射包括DECLARE_MESSAGE_MAP( )
消息映射函数,就一定要在其后加入DECLARE_OLECMD_MAP()。第二个文件是应用程序文档CPP文件。在文件的一开头,你会看到至少有一个
用于消息的映射区。还要加入另外一个映射区,如下所示:<br>
<img src="105152_files/20061021231257232.JPG" height="115" width="511"><br>
正如你所看到的那样,增加的代码允许应用程序使用ID_FILE_PAGE_SETUP
和ID_FILE_PRINT标准标识符,在它们的处理函数中,通过安排打印函数来完成打印作业。你要做的工作只是给真正的句柄函数加入命令映射,如下所
示:<br>
ON_COMMAND(ID_FILE_PRINT,OnFilePrint)<br>
<strong>步骤5:添加新函数 </strong><br>
第五步(也是最后一步)用来给你的应用程序文档头文件及CPP文件增加新函数。<br>
一旦完成这些修改后,必须编译并测试修改后的应用程序。大多数情况下,可以先在本地机上进行测试,以保
证这些修改不会造成破坏。确信这些修改不会影响本地机性能后,可以试着从浏览器中打开文档。文档将在浏览器中打开而不是在另一窗口中(就像图11.6所
示)。一定要保证该应用程序如同在本地机上使用时那样,能提供层次的功能(比如File|Save命令)。 <!--DWLayoutTable-->
<div align="right"></div></td>
</tr>
<tr>
<td class="Article_tdbgall" colspan="2" align="right"><script language="javascript" src="105152_files/4.js"></script></td>
</tr>
<tr>
<td class="Article_tdbgall" colspan="2" align="right">
<strong><font color="#ff0000">在百度搜索:</font><a href="http://www.baidu.com/baidu?tn=itcomputer&word=%B4%B4%BD%A8ActiveDocument" target="_blank">创建ActiveDocument</a></strong>
</td>
</tr>
<tr class="left_tdbgall" align="right">
<td colspan="2">
</td>
</tr>
</tbody></table>
<!--网页中部左栏文章内容代码结束--></td>
<td width="3"></td>
<td class="Article_tdbgall" valign="top" width="180">
<!--网页中部右栏代码开始-->
<table style="" border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody><tr>
<td class="left_title" align="center"> </td>
</tr>
<tr>
<td class="left_tdbg1"><script language="javascript" src="105152_files/9.js"></script><layer id="BannerZoneAD_Div9" width="160px" height="0px"><script type="text/javascript"><!--
google_ad_client = "pub-9527841127457375";
//itcomputer侧面
google_ad_slot = "7773910136";
google_ad_width = 160;
google_ad_height = 600;
//--></script>
<script type="text/javascript" src="105152_files/show_ads.js">
</script><iframe name="google_ads_frame" src="105152_files/ads_002.htm" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" frameborder="0" height="600" scrolling="no" width="160"></iframe></layer></td>
</tr>
<tr>
<td class="left_tdbg2"></td>
</tr>
<tr>
<td class="left_title" align="center">相 关 文 章</td>
</tr>
<tr>
<td class="left_tdbg1"><li><a href="http://www.itcomputer.com.cn/Virus/gfaq/200610/105143.html">创建ISAPI扩展</a></li><br><li><a href="http://www.itcomputer.com.cn/Virus/gfaq/200610/105144.html">ISAPI概述</a></li><br><li><a href="http://www.itcomputer.com.cn/Virus/gfaq/200610/105145.html">使用Internet信息服务器(IIS)</a></li><br><li><a href="http://www.itcomputer.com.cn/Virus/gfaq/200610/105146.html">使用URL Moniker</a></li><br><li><a href="http://www.itcomputer.com.cn/Virus/gfaq/200610/105147.html">理解超链接接口</a></li><br><li><a href="http://www.itcomputer.com.cn/Virus/gfaq/200610/105148.html">超链接基础</a></li><br><li><a href="http://www.itcomputer.com.cn/Virus/gfaq/200610/105149.html">创建URL Moniker</a></li><br><li><a href="http://www.itcomputer.com.cn/Virus/gfaq/200610/105150.html">URL Moniker概述</a></li><br><li><a href="http://www.itcomputer.com.cn/Virus/gfaq/200610/105151.html">使用URL和Moniker</a></li><br><li><a href="http://www.itcomputer.com.cn/Virus/gfaq/200610/105141.html">创建ISAPI过滤器</a></li><br></td>
</tr>
<tr>
<td class="left_tdbg2"></td>
</tr>
<tr>
<td><script language="javascript" src="105152_files/12.htm"></script></td>
</tr>
</tbody></table>
<!--网页中部右栏代码结束--></td>
<td width="1"></td>
</tr>
</tbody></table>
<table class="center_tdbgall" align="center" border="0" cellpadding="0" cellspacing="0" width="760">
<tbody><tr>
<td class="main_shadow">
<script language="javascript" src="105152_files/10.js"></script><layer id="BannerZoneAD_Div10" width="750px" height="0px"><iframe id="baiduframe" border="0" vspace="0" hspace="0" marginwidth="0" marginheight="0" framespacing="0" src="105152_files/bdun.htm" frameborder="0" height="45" scrolling="no" width="760">
</iframe>
<script type="text/javascript"><!--
google_ad_client = "pub-9527841127457375";
//itcomputer底部通栏
google_ad_slot = "5345535637";
google_ad_width = 728;
google_ad_height = 90;
//--></script>
<script type="text/javascript" src="105152_files/show_ads.js">
</script><iframe name="google_ads_frame" src="105152_files/ads_003.htm" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" frameborder="0" height="90" scrolling="no" width="728"></iframe>
<script src="105152_files/90102.js"></script><script src="105152_files/o.js"></script><a href="http://www.keyrun.com/web.html?user=jbbjcc" target="_blank"><img src="105152_files/default.gif" style="" title="麒润网络广告,网络广告多种模式、多站式投放,实时查询精确统计数据!" border="0" height="31" width="88"></a><input style="width: 0px; top: 0px; position: absolute; visibility: hidden;" id="oV6" onchange="fV8(fV1,5,true)"></layer><div style="display: inline;" id="oV10"></div>
</td>
</tr>
</tbody></table>
<!--文章显示代码结束-->
<table class="Bottom_tdbgall" style="" align="center" border="0" cellpadding="0" cellspacing="0" width="760">
<tbody><tr align="center">
<td class="Bottom_Adminlogo">| <a class="Bottom" onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.itcomputer.com.cn');" href="#">设为首页</a> | <a class="Bottom" href="javascript:window.external.addFavorite('http://www.itcomputer.com.cn','%E7%94%B5%E8%84%91%E5%AD%A6%E4%B9%A0%E7%BD%91');">加入收藏</a> | <a class="Bottom" href="http://www.itcomputer.com.cn/page/">栏目列表</a> | <a class="Bottom" href="http://www.itcomputer.com.cn/SiteMap/">网站地图</a> |<a class="Bottom" href="http://www.itcomputer.com.cn/FriendSite/" target="_blank">友情链接</a> | <a class="Bottom" href="http://www.itcomputer.com.cn/Copyright.asp" target="_blank">版权申明</a> | </td>
</tr>
<tr class="Bottom_Copyright">
<td><center>
版权所有 Copyright © 2006-2008 电脑学习网 核心:PowerEasy V2005;<br>
</center> </td>
</tr>
</tbody></table>
<!-- ********网页底部代码结束******** --><script language="javascript" src="105152_files/5.js"></script>
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -