ITextDocument::Open 方法 (tom.h)

打开指定的文档。 有一些参数用于指定访问和共享权限、文件的创建和转换,以及文件的代码页。

语法

HRESULT Open(
  [in] VARIANT *pVar,
       long    Flags,
       long    CodePage
);

参数

[in] pVar

类型: VARIANT*

一个 VARIANT 类型的值,指定要打开的文件的名称。

Flags

类型: long

文件创建、打开、共享和转换标志。 默认值为零,它提供读/写访问权限和读/写共享、始终打开和自动识别文件格式, (无法识别的文件格式被视为文本) 。 其他值在以下组中定义。

可以使用这些值的任何组合。

tomReadOnly

tomShareDenyRead

tomShareDenyWrite

tomPasteFile

这些值互斥。

tomCreateNew

tomCreateAlways

tomOpenExisting

tomOpenAlways

tomTruncateExisting

tomRTF

tomText

tomHTML

tomWordDocument

CodePage

类型: long

要用于文件的代码页。 零 (默认值) 表示 CP_ACP (ANSI 代码页) ,除非文件以 Unicode BOM 0xfeff开头,在这种情况下,该文件被视为 Unicode。 请注意,代码页 1200 为 Unicode,CP_UTF8为 UTF-8。

返回值

类型: HRESULT

返回值可以是对应于系统错误或 COM 错误代码的 HRESULT 值,包括以下值之一。

返回代码 说明
S_OK
方法成功
E_INVALIDARG
无效的参数。
E_OUTOFMEMORY
内存不足。
E_NOTIMPL
功能未实现。

注解

如果使用 ITextDocument::New 方法创建文档并使用零值,则文本对象模型 (TOM) 引擎必须选择要使用的标志和代码页。 UTF-8 RTF 格式 (下面定义的 RTF) () 是一个有吸引力的默认值。

Microsoft Rich Edit 3.0 定义了一个控件字 \urtf8,应使用该字而不是 \rtf1。 这意味着该文件以 UTF-8 进行编码。 输入时,RTF 文件包含相关的代码页信息,但为了保存目的,可以更改此信息,从而允许将一个版本转换为另一个版本。

如果未在 Flags 参数中设置 tomPasteFile 标志,该方法在保存任何未保存的更改后首先关闭当前文档。

如果文件以 Unicode BOM 0xfeff开头,则会将其识别为 Unicode 文本文件。 ITextDocument::Open 方法在输入时去除此 Unicode BOM,ITextDocument::Save 将其应用于输出。 请参阅 有关 ITextDocument::Save 方法的注释,其中讨论了将 Unicode BOM 放在 Unicode 纯文本文件的开头。 转换值 tomRTFtomHTMLtomWordDocument 主要用于 ITextDocument::Save 方法,因为这些格式在输入时很容易识别。

错误由负值报告,但由于文件操作具有多种错误,因此可能不需要提供的所有错误信息。 具体而言,你可能不在乎 (,或者你可能已经知道) 使用了哪个文件工具,即 Windows (pVar.vt = VT_BSTR) 或 IStorage 的 OLE 存储。 通过屏蔽 HRESULT 值的 18 位,可以忽略差异并将其 STG_E_xxx 值进行比较。 例如:

HRESULT hr;
VARIANT Var;
VariantInit(&Var)

Var.vt = VT_BSTR;
Var.bstrVal = SysAllocString(L"test.txt"); // Use file command
hr = pDoc->Open(&Var, tomOpenExisting, 0);
hr &= ~0x40000; // Mask off bit 18
if(hr == STG_E_FILENOTFOUND)
{
...// the rest of the code
}

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 tom.h
DLL Msftedit.dll

请参阅

概念性

IStorage

IStream

ITextDocument

其他资源

引用

保存

文本对象模型