La logique de COM/OLE

Yo! les geeks,

Je suis en train de m’autoformer à COM/OLE en C/C++ Win32 à grands coups de Google et MSDN et une partie de la logique m’échappe. Je pense qu’il me manque une vue d’ensemble. J’ai bien pigé les notions d’interfaces (COM) et d’encapsulation (OLE - embedding) mais je n’arrive pas à comprendre comment savoir qui a besoin de quoi…

Prenons un exemple simple : création d’un WebControl (IWebBrowser2) dans une fenêtre bête et méchante.
Si je comprends bien, IWebBrowser2 est une interface COM (Component Object Model) qui s’applique dans un OLE (Object Linking & Embedding).
Autrement dit : cette interface me permet de créer un WebControl (ça c’est la partie COM) que j’intègre dans mon appli (la partie OLE). J’ai bon jusque là ?

D’un point de vue technique, pas de problème, c’est jamais que du virtual à tous les étages. L’info qui me manque est « Quelles sont les classes/interfaces que je dois implémenter ? ». J’ai pas trouvé l’info sur MSDN, genre « pour IWebBrowser2 vous devez implémente ITruc et IMachin ». Et dans divers exemples je vois des implémentations différentes :

  • IStorage
  • IOleInPlaceFrame
  • IOleClientSite
  • IOleInPlaceSite
  • IOleContainer
  • IDispatch (cas particulier, non ?)
  • IOLEControlSite
    Pour ce que j’en déduis, IOleInPlaceFrame, IOleClientSite, IOleInPlaceSite seraient la base minimum d’un framework OLE. Ils étaient communs à tous les exemples. J’ai bon ?
    Et les autres ?

Serais je à la ramasse sur la logique COM/OLE ?
Si quelqu’un pouvait m’éclairer ou me donner l’url d’un site qui explique ça aux neuneux dans mon genre :stuck_out_tongue:

Thx
Antoine

PS : pas de .NET C# (kecémieu-mangézan-jesais) paske je suis sur un projet déjà existant en C/C++.

Je suis désolé, je parles de C#, mais c juste pour dire qu’il éxiste des techniques pas trop compliquées pour utiliser des objets COM / OLE / ActiveX dans du .Net et vice versa…
Voilà, c’est dit.

C’est pas mal generique ta question et personellement je te recommenderais surtout de te plonger dans ce livre. Je pense que tu y trouvera tout ton bonheur sur la « philosophie » de developpement derriere COM/OLE, parceque techniquement si ca se comprend, l’important c’est de choper la « maniere de penser » COM pour bien saisir la logique de la chose.
Personellement je sais utiliser COM pour faire de l’interop et j’ai des bonnes notions mais je pense pas maitriser assez pour te faire un topo dessus :stuck_out_tongue: Donc mon conseil c’est de taper dans ce livre (ou sa traduction), il est ecrit par Don -JeSuisPasUneTafiole- Box et a priori, d’apres ce qu’on m’a dit et ce que je sais du monsieur, il est tres tres bon.