Monikers d’élément

Une autre classe moniker implémentée par OLE est le moniker d’élément, qui peut être utilisé pour identifier un objet contenu dans un autre objet. Un type d’objet contenu est un objet OLE incorporé dans un document composé. Un document composé peut identifier les objets incorporés qu’il contient en affectant chacun un nom arbitraire, tel que « embedobj1 », « embedobj2 », etc. Un autre type d’objet contenu est une sélection utilisateur dans un document, telle qu’une plage de cellules dans une feuille de calcul ou une plage de caractères dans un document texte. Un objet qui se compose d’une sélection est appelé pseudo-objet , car il n’est pas traité comme un objet distinct tant qu’un utilisateur marque la sélection. Une feuille de calcul peut identifier une plage de cellules à l’aide d’un nom tel que « 1A:7F », tandis qu’un document de traitement de texte peut identifier une plage de caractères à l’aide du nom d’un signet.

Un moniker d’élément est utile principalement lorsqu’il est concaténé, ou composé, avec un autre moniker, qui identifie le conteneur. Un moniker d’élément est généralement créé, puis composé sur (par exemple) un moniker de fichier pour créer l’équivalent d’un chemin d’accès complet à l’objet. Par exemple, vous pouvez composer le moniker de fichier « c:\work\report.doc » (qui identifie l’objet conteneur) avec l’élément moniker « embedobj1 » (qui identifie un objet au sein du conteneur) pour former le moniker « c:\work\report.doc\embedobj1 », qui identifie de manière unique un objet particulier dans un fichier particulier. Vous pouvez également concaténer des monikers d’éléments supplémentaires pour identifier les objets profondément imbriqués. Par exemple, si « embedobj1 » est le nom d’un objet de feuille de calcul, pour identifier une certaine plage de cellules de cet objet de feuille de calcul, vous pouvez ajouter un autre moniker d’élément pour créer un moniker qui serait l’équivalent de « c:\work\report.doc\embedobj1\1A:7F ».

Lorsqu’il est combiné à un moniker de fichier, un moniker d’élément forme un chemin complet. Les monikers d’élément étendent ainsi la notion de noms de chemin d’accès au-delà du système de fichiers, en définissant les noms de chemin d’accès pour identifier des objets individuels, pas seulement des fichiers.

Il existe une différence significative entre un moniker d’élément et un moniker de fichier. Le chemin d’accès contenu dans un moniker de fichier est significatif pour toute personne qui comprend le système de fichiers, tandis que le chemin partiel contenu dans un moniker d’élément n’est significatif que pour un conteneur particulier. Tout le monde sait ce que « c:\work\report.doc » fait référence, mais un seul objet conteneur particulier sait ce que « 1A:7F » fait référence. Un conteneur ne peut pas interpréter un moniker d’élément créé par une autre application ; le seul conteneur qui sait quel objet est référencé par un moniker d’élément est le conteneur qui a affecté le moniker d’élément à l’objet en premier lieu. Pour cette raison, la source de l’objet nommé par la combinaison d’un fichier et d’un moniker d’élément doit non seulement implémenter IPersistFile, pour faciliter la liaison du moniker de fichier, mais également IOleItemContainer pour faciliter la résolution du nom de l’élément moniker dans l’objet approprié, dans le contexte d’un fichier.

L’avantage des monikers est que quelqu’un qui utilise un moniker pour localiser un objet n’a pas besoin de comprendre le nom contenu dans le moniker d’élément, tant que le moniker d’élément fait partie d’un composite. En règle générale, il n’est pas logique qu’un moniker d’élément existe lui-même. Au lieu de cela, vous composez un moniker d’élément sur un moniker de fichier. Vous appelez ensuite IMoniker::BindToObject sur le composite, qui lie les monikers individuels dans celui-ci, en interprétant les noms.

Pour créer un objet moniker d’élément et retourner son pointeur vers le fournisseur moniker, OLE fournit la fonction d’assistance CreateItemMoniker. Cette fonction crée un objet moniker d’élément et retourne son pointeur vers le fournisseur.

Anti-Monikers

Monikers de classe

Monikers composites

Monikers de fichier

Monikers de pointeur