Les exemples en C# s’appliquent à Windows. Les exemples en C++ s’appliquent à tous les systèmes d’exploitation pris en charge.
Types de propriétés sous Linux et macOS
Types de propriétés sous Linux et macOS
En C++, une propriété est constituée d’une paire de méthodes (get et put pour les propriétés en lecture-écriture) ou d’une seule méthode get (pour les propriétés en lecture seule).Les propriétés d’ABBYY FineReader Engine peuvent être des types suivants :
- VARIANT_BOOL (avec deux valeurs, VARIANT_TRUE ou VARIANT_FALSE)
- int
- double
- BSTR, un pointeur vers une string Unicode. La valeur zéro indique une string vide.
- __int64
- HANDLE*
- interface dérivée de IUnknown
- enum
Types de propriétés sous Windows
Types de propriétés sous Windows
Les utilisateurs de C# et de Visual Basic connaissent bien la notion de propriété.Pour un utilisateur C++, une propriété est constituée d’une paire de méthodes (get et put pour les propriétés en lecture-écriture) ou d’une seule méthode get (pour les propriétés en lecture seule).Cependant, la fonctionnalité “Native COM support” de Microsoft C++ rend la gestion des propriétés plus proche de celle utilisée en C#.Les propriétés d’ABBYY FineReader Engine peuvent être des types suivants :
| IDL | C++ | C# | Visual Basic .NET |
|---|---|---|---|
| VARIANT_BOOL (VARIANT_TRUE ou VARIANT_FALSE) | VARIANT_BOOL (VARIANT_TRUE ou VARIANT_FALSE) | bool (true ou false) | Boolean (True ou False) |
| int | int | int | Integer |
| double | double | double | Double |
| BSTR, un pointeur vers une string Unicode. La valeur zéro indique une string vide. | BSTR | string | String |
| __int64 | __int64 | Int64 | Int64 |
| HANDLE* | void* | IntPtr | IntPtr |
| interface dérivée de IUnknown | interface dérivée de IUnknown | object | Object |
| enum | enum | enum | Enum |
Utilisation des propriétés simples
Utilisation des propriétés simples
Nous prendrons une propriété booléenne comme exemple pour montrer comment les propriétés simples sont utilisées. La propriété est décrite dans la bibliothèque de types comme suit :Si la bibliothèque de types définit uniquement la méthode “get” pour une propriété simple, cette propriété est dite en lecture seule. Sa valeur ne peut pas être modifiée par l’utilisateur et peut uniquement être consultée en “lecture”.Un utilisateur C# manipule une propriété simple comme suit :Un utilisateur C++, en revanche, utilise deux méthodes pour travailler avec cette propriété. Ces méthodes portent les préfixes get_ et put_. Le code C++ correspondant doit se présenter comme suit :Cependant, la fonctionnalité Native COM support sous Windows simplifie la procédure, et le code correspondant doit se présenter comme suit :
Utilisation des propriétés string
Utilisation des propriétés string
L’utilisation des propriétés En C++, cette propriété s’utilise comme suit :Windows :Linux :
string est très similaire à celle des propriétés simples, mais présente quelques particularités. En C++, l’utilisateur qui manipule des propriétés string doit libérer les chaînes passées aux méthodes set, ainsi que celles renvoyées par les méthodes get.- Sous Windows, cela se fait automatiquement en C#, en Visual Basic et en C++ avec le Native COM support.
- Sous Linux, utilisez les fonctions FREngineAllocString et FREngineFreeString pour allouer et libérer la mémoire des chaînes.
string appelée Name. Cette propriété est décrite dans la bibliothèque de types comme suit :Utilisation des propriétés d’objet
Utilisation des propriétés d’objet
En C++, on dira que les paramètres des méthodes “get” des propriétés d’objet sont des pointeurs vers un pointeur d’interface d’objet. Comme les interfaces des objets dérivent de IUnknown, elles peuvent être transmises sous forme de pointeurs IUnknown aux propriétés ou méthodes qui utilisent des objets de plusieurs types comme paramètres d’entrée ou de sortie (vous pouvez toutefois obtenir l’interface dont vous avez besoin en appelant la méthode QueryInterface).S’il existe une méthode “put” pour une propriété d’objet, elle prend en charge le clear put, décrit par le mot-clé propput dans la bibliothèque de types. Cela signifie que l’objet est copié (au lieu de transmettre un pointeur vers l’interface d’un objet existant).Supposons de nouveau que l’objet MyObject prenne en charge la propriété MyObjectProperty, qui fait référence à un objet de type MyChildObject.En C++, ce code s’écrit comme suit :Notez qu’en C++, vous devez appeler la méthode Release pour un objet obtenu via une propriété. Le Native COM support sous Windows appelle automatiquement les méthodes AddRef et Release à l’aide de pointeurs automatiques.
