【发布时间】:2013-07-30 02:10:11
【问题描述】:
我在 Delphi 中使用 Microsoft 文本对象模型类型库来使用 Microsoft RichEdit 控件的某些功能。该类型库包含在一个免费软件组件中,并且多年来运行良好。例如,这里显示了一个 ITextDocument 界面:
ITextDocument = interface(IDispatch)
['{8CC497C0-A1DF-11CE-8098-00AA0047BE5D}']
function Get_Name: WideString; safecall;
function Get_Selection: ITextSelection; safecall;
function Get_StoryCount: Integer; safecall;
...
我不知道它是如何创建的。现在我想为 Windows 8 (MSFTEDIT.DLL) 中为 RichEdit 发布的新接口更新它。例如,在 ITextDocument2 中有一个 Range2 方法,根据 MSDN 有一个新的 ITextRange2 接口。有什么方法可以使用 Delphi 的导入类型库功能来组成新接口的定义?
更新:我想出了如何生成该单元。在 Delphi 中,单击 Import Component,然后从注册的服务中选择“tom”。这将创建一个完全一样的单元。现在的问题是,为了从 Windows 8 中获得新的“tom”界面,如果我需要在其上安装 Delphi,那就太过分了。必须有更简单的方法。不知何故,我必须在 Win 8 上生成一个 TLIB,然后将其导入我在 Windows 7 上的 Delphi 中。有人知道如何在 Windows 8 上为那个 msftedit.dll 或 tom 接口生成一个 TLIB 吗?
另一个发现: 如果我在 Delphi 中打开 msftedit.dll 作为 tlib 打开,它会显示所有接口。也有一个导出按钮,但单击时不起作用。没发生什么事。我在帮助文件和网络上搜索了 Type Lib Explorer 帮助,但没有找到任何关于为什么该导出按钮不起作用的任何信息。
【问题讨论】:
-
糟糕。忘了提到我使用的是 Delphi 2007,因为这是一个非 unicode 应用程序。但是我仍然可以通过 tnt 和我自己的 unicode 补丁使用这个 unicode dll。
标签: delphi delphi-2007 richedit typelib