Visual C++ ActiveX 控件承载 Visual Basic 或 HTML 中的 Office 文档

DSO Framer ActiveX 文档控件示例示例控件写入在 Visual C++6.0 中使用标准的 C++。 重新它可以编译在 Visual Studio.NET 2003 或 Visual Studio 2005 而无需进行修改。 版本 1.3 是所有的当前版本的 Microsoft Office,包括 Microsoft Office 2007 兼容的。 为那些想而不必重新编译该项目演示该控件提供了示例的发布版本。 显示如何从 HTML 使用该控件在 WebTest 文件夹中提供一个 Web页面的示例。 其可打开 Office 文档在客户端计算机上,必须安装 Office 2000、 Office XP、 Office 2003 或 Office 2007。运行该示例要运行示例,请按照下列步骤操作:将示例文件解压缩到您选择的一个文件夹。在 Internet Explorer 中打开 Webtest.htm (从 WebTest 文件夹中)。 如果系统提示您选择 是 以启用 ActiveX 控件的脚本。 如果要运行 Windows XP SP 2,Internet Explorer 可能会暂时阻止对 Web页的活动内容。 可以选择以允许通过单击信息栏上的内容。 有关更多信息栏请请参阅以下 Microsoft 知识库中的文章:

在 Windows XP SP 2 中,Internet Explorer 信息栏说明

看到 Web 页中的控件时, 单击控件。在 文件 菜单上单击 新建 以添加到控件的一个新文档。代码使用控件的解决方案该控件是非常自定义的。 您可以更改该控件元素的任何配色方案以及确定边框类型和自定义的题注。 这些可以根据需要设置在运行的时或设计时。

此控件还支持一个名为可以获取对嵌入对象的 IDispatch 接口的引用的 ActiveDocument 属性。 从此接口可以自动执行要执行的任务、 编辑在的文档的部分或收集有关哪些用户已添加或删除的信息对象。 是例如如果必须打开一个 Word 文档,您可以使用类似于以下操作来添加文本的行的代码:

Dim oDoc As Word.Document 
Set oDoc = DsoFramer1.ActiveDocument 
oDoc.Content.Text = "This was added by Automation"

控制对象,而该对象嵌入程序能够是非常强大。

注意 : 从 HTML 脚本控件在 Web 上的自动化可能向用户,非常危险,因此该控件已故意被标记为不"可安全执行脚本"。 可能会提示用户使用控件在网页中的用户才使用此控件启用脚本。 这是为适当的安全性必需的。

创建新文档该组件可以在系统上创建为注册的任何 ActiveX 文档类型的新文档。 用户可以使用 新建 对话框,从菜单的内置功能或使用您提供创建新文档的自定义函数。

在控件上的 CreateNew 方法可以生成自己的方法以启动新文档。 该方法将采用到 Office 模板文件的编程标识符 (ProgId) 要启动,ActiveX 文档类型的或者路径。 例如,您可以使用下面的 Office ProgId

Excel Spreadsheet "Excel.Sheet" 
Excel Chart "Excel.Chart" 
PowerPoint Presentation "PowerPoint.Show" 
Project Database "MSProject.Project" 
Visio Drawing "Visio.Drawing" 
Word Document "Word.Document"

如果 ProgId 或模板不能识别或无法启动服务器,您收到在"自定义错误信息"部分讨论的标准错误信息之一。。打开的文档可以同时打开和编辑位于本地驱动器、 通用命名约定 (UNC) 共享或 Web 文件夹的 Office 文档。 一种标准 打开 对话框可以显示用户或调用代码的已提供,使用户可以查找并选择要打开的文件。 可以直接调用 Open 方法,并为要打开一个特定文件的控件。

打开 将是一个的合格的文件路径或一个 URL 到远程 Web 服务器上的一个文件。 该控件将尝试获得对该文件的写访问,并使其锁定,无法编辑除非为 ReadOnly 参数传递 True。 是例如下面的代码打开本地文件,并编辑其上保持锁:

DsoFramer1.Open "C:\TestBook.xls"

如果要打开的不与相关联的 Office 应用程序,但在 Office 加载的文件,您可以在 Open 方法中指定备用的 ProgId。 是例如在 Word 中打开纯文本文件,您可以使用类似于以下内容的代码:

DsoFramer1.Open "C:\Plain.txt", , "Word.Document"

如果您使用 URL 组合这一功能,可以打开生成的 HTML 流式处理从 ASP 文件,并使其显示为内部的 Excel 的数据使用类似下面的代码:

DsoFramer1.Open "https://secureserver/test/mytest.asp?id=123", True, _ "Excel.Sheet", "MyUserAccount", "MyPassword"

</a0>-用户可以编辑结果并将文件保存为磁盘上的本地文件或者将该文件保存到该服务器上,为 Web 文件夹中的新文件。

此外,您可以使用 Open 方法以创建和显示通过自动化创建一个文档的副本。 例如,下面的代码将创建一个新的 Word 文档,然后显示 it.

Dim oWordApp As Object
Dim oWordDoc As Object 
Set oWordApp = CreateObject("Word.Application") 
Set oWordDoc = oWordApp.Documents.Add 
oWordDoc.Content.Text = "Hello World" 
DsoFramer1.Open oWordDoc

保存文档若要保存文档,可以使用菜单,或调用 Save 方法。 Save 方法可同时为 保存 一个简单的命令以及作为一个 另存为 命令根据是否传递第一个参数的文件位置。 如果当前的文件打开只读的并且不执行指定保存位置,将只读的发生错误。 有关详细信息,请参阅在"自定义错误消息"部分。

还可以保存到 Web 文件夹在远程服务器上如果该服务器的 HTTP 支持 Microsoft FrontPage Server Extensions (FPSE) 或 Web 分发创作和版本控制 (WebDAV) 协议扩展。 下面的代码演示一个保存到远程文件服务器的新文件:

DsoFramer1.CreateNew "PowerPoint.Show" ' Let user edit the document, then save it. DsoFramer1.Save "http://myserver/mypresentations/test.ppt"

按默认,如果给定的位置已存在文件您收到的错误信息。 但是,通过将 OverwriteExisting 参数设置为 True,可以显式判断覆盖该控件。

处理您自己的文件命令每次用户从 文件 菜单或项与文件命令的工具栏上选择某个项目,将 OnFileCommand 引发事件。 该事件可以重写控件的默认行为,并提供自己的自定义操作和对话框以进行正常的文件操作。

您可以启用或禁用通过 EnableFileCommand 属性的 文件 菜单项。 是例如以下代码将禁用该 打印 命令,然后陷阱打印对禁止用户打印:

Private Sub Form_Load() 
DsoFramer1.EnableFileCommand(dsoFilePrint) = False
End 
Sub Private Sub DsoFramer1_OnFileCommand(ByVal Item As _ DSOFramer.dsoFileCommandType, Cancel As Boolean) 
If Item = dsoFilePrint 
Then MsgBox "You asked to print, but I won't allow it." 
Cancel = True 
End If
End Sub

显示或隐藏在标题栏、 Menubar 或工具栏可以以编程方式显示或标题栏、 菜单栏或工具栏通过设置隐藏这些参数为 True 或 False。 您尝试限制用户操作或控制文档的外观,而它嵌入时,这可能会很有用。

注意如果将 工具栏 设置为 False 并不是所有的工具栏可能被隐藏。 打开和关闭,工具可以切换,当这是可能,必须确定 ActiveX 文档服务器。 最好在打开或创建新文档,以便在服务器知道您的选择时的初始嵌入之前设置此属性。 请注意尽管所有的 Office 服务器支持打开和关闭切换工具,某些第三方服务器可能没有。框架挂钩策略为了在主机获得或失去前状态时,正确处理激活,ActiveX 控件,请使用框架挂钩。 情况默认,创建控件时设置此挂钩。 在某些情况下,尤其是当该控件用于从多线程的 UI 主机,或者当控件嵌套在容器控件如次时在.NET WinForm 应用程序在控件的父级中选项卡页创建不会是挂起运行时该控件在正确窗口。 在这的种情况下您可以使用 FrameHookPolicy 属性重置此挂钩,在更合适的时间。 是例如如果您构建.NET WinForm 解决方案,将在 FrameHookPolicy 属性设置为 dsoSetOnFirstOpen 属性窗口中。组件激活策略示例控件可以在指定的主机应用程序中支持其自身的多个实例。 但是,只有一个控件处于活动状态在给定的时间。 这是 ActiveX 文档承载的要求。 若要处理单个主机中的多个实例,控件注册使用组件管理器。 这将允许该组件管理器跟踪活动控件。 使用 ActivationPolicy 属性若要控制在组件的更改处理嵌入的对象的方式。 ActivationPolicy 属性可以设置一个或多个定义 dsoActivationPolicy 枚举的位标志。自定义错误消息除了标准 COM 错误信息控件可以返回下列自定义的错误信息之一

0x80041102 The ProgID/Template could not be found or is not associated with a COM server. 
0x80041103 The associated COM server does not support ActiveX Document embedding. 
0x80041104 The command is not supported by the document server. 
0x80041105 Unable to perform action because document was opened in read-only mode. 
0x80041106 The Microsoft Internet Publishing Provider is not installed, so the URL document cannot be open for write access. 0x80041107 No document is open to perform the operation requested. 
0x80041108 Cannot access document when in modal condition. 0x80041109 Cannot Save file without a file path.

使用、 通讯组和支持的通知Microsoft 提供仅,用于说明的编程示例不附带任何明示或默示的保证。 这包括,但不限于适销性或针对特定用途的适用性的默示保证。 本文假定您熟悉所演示的编程语言和用于创建和调试过程的该工具。 Microsoft 支持工程师可以帮助解释某个特定过程的功能。 但是,它们将不修改这些示例以提供额外的功能或构建过程以满足您的特殊需求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值