Implementieren von COM-IDispatch-ohne ATL

Schreibe ich eine Excel-RTD-server-Implementierung, und ich bin fest auf dem boilerplate für eine Co-Klasse, die implementiert IDispatch. Ich habe keinen Zugriff auf ATL, aber ich bin mit ActiveQt, obwohl ich bin daran interessiert, wie dies bei raw-C-oder C++ zu. Wie die Umsetzung des IDispatch Methoden in einen COM-server?

Die Dokumentation ist nur panickingly schrecklich, wie immer. Was ich bisher gelesen:

Den LoadTypeLib() Ansatz geeignet scheint, für eine COM - client zu erreichen, geben Sie Informationen, die für einige Bibliotheken, nicht für einen COM-server versucht, die Introspektion selbst. Bin ich richtig?

  • Typischerweise implementieren Sie IDispatch durch die Zahlung von Microsoft, um Ihnen eine Kopie der ATL. Die Dokumentation aus der Zeit um 1999, als die ATL nicht mehr verfügbar war. Nun, ATL, wie Sie es tun. Zeitraum. (Ich habe IDispatch implementiert. Ich würde nicht empfehlen, die Erfahrung, es ist harte Arbeit und eine Menge eingeben.)
  • Nun, ich Stimme mit Ihnen überein, dass dies wahrscheinlich die Günstigste Möglichkeit. Diese verdammten troll-Technologien. (Ich habe gelogen: ich habe Zugriff auf ATL, aber nicht in meiner workstation, und ich wollte nur wissen, ob ich bekommen konnte, zusammen, ohne dass es. Aber hey, Sag niemand darüber, ok?)
  • Ich fand "Inside COM+ Base Services" sehr hilfreich "zurück, wenn" - es hat ein Kapitel über die automation, welche sich mit der Umsetzung IDispatch.
  • Hey, vielleicht ist Qt hat einen Weg, es zu tun. Was weiß ich über Qt? Nicht viel.
  • Genial, thrysoee.dk/InsideCOM+, vielen Dank. Skimming durch die IDispatch Teil gibt mir eine Implementierung mit ITypeInfo und LoadTypeLib() wie ich bereits erwähnt habe. @Ben: ich fürchte, dass Qt nicht viel code, damit umzugehen.
  • Blick auf Noseratio Antwort unten, es scheint mit ITypeInfo ist nicht so schwer, nachdem alle.

InformationsquelleAutor alecov | 2013-10-08
Schreibe einen Kommentar