属性处理
ABBYY FineReader Engine 对象的接口有多种属性和方法。一般来说,属性表示关于对象的信息,而方法表示对象可执行的操作。
C# 以及Visual Basic 用户对属性概念比较熟悉。对于 C++ 用户,属性是get和put方法(读写属性 )或单个get方法(只读属性)。不过,Microsoft C++ 特有的“Native COM 支持”使其属性处理方式接近于 C# 的处理方式。
ABBYY FineReader Engine 属性可包含以下类型:
IDL | C++ | C# | Visual Basic .NET |
---|---|---|---|
VARIANT_BOOL (VARIANT_TRUE 或 VARIANT_FALSE) | VARIANT_BOOL (VARIANT_TRUE 或 VARIANT_FALSE) | bool (true 或 false) | Boolean (True 或 False) |
int | int | int | Integer |
double | double | double | Double |
BSTR,Unicode 字符串指针。零值指定空字符串。 | BSTR | string | String |
__int64 | __int64 | Int64 | Int64 |
HANDLE* | void* | IntPtr | IntPtr |
IUnknown-derived interface | IUnknown-derived interface | 对象 | 对象 |
enum | enum | enum | Enum |
不同类型属性的处理方式如下:
处理简单属性
处理字符串属性
Working with object properties
处理只读对象属性
某些 ABBYY FineReader Engine 对象(例如,ILayout::Blocks)具有只读对象属性。此类属性并非不可更改,只是不能通过直接用另一个对象替代其对象属性对其更改,因为不支持“put”方法。不过,您可以更改这些对象的子对象。
在 raw C++ 中,如果 要更改这样的属性,则需要将属性对象的引用传递给新变量,然后使用该变量来更改它。只读集合 ILayout::Blocks 属性的 C++ 示例如下:
// 假设页面已打开 ILayout* pLayout = 0; ILayoutBlocks* pLayoutBlocks = 0; int blockIndex = 0; // 接收之前打开的 FRPage 的布局 pFRPage->get_Layout( &pLayout ); // pLayoutBlocks 变量收到 Layout 的块集合的引用 pLayout->get_Blocks( &pLayoutBlocks ); // 从块集合去除一个元素 pLayoutBlocks->DeleteAt( blockIndex ); // 处理修改的布局 ... // 发布对象 pLayoutBlocks->Release(); pLayout->Release();
17.09.2024 15:14:41