Jump to content

DVBViewer Events mit C++ / COM Interface


ipforce

Recommended Posts

Hallo,

 

quäle mich seit gestern mit dem COM Interface rum. Zugriff au die Properties und Methoden per Invoke funktionieren, vom EPG bis Datamanger lese ich schon alles.

 

Aber ich schaffe es nicht einen Event-Handler, z.B.

 

procedure onOSDWindow(WindowID: Integer);

 

in meine Applikation einzuhängen.

 

CoInitialize( NULL );

GetActiveObject(..)

QueryInterface(...)

etc. läuft durch...

 

ItemProperties für das Events Attribut (IDVBViewerEvents) können auch gelesen werden,

aber wie gehts eigentlich weiter ?

 

Wie muß der Eventhandler registriert werden ?

 

Hab mal ein Interface beschrieben, wie das

 

// Interface definition  for IDVBViewerEvents
// DIID_IDVBViewerEvents: TGUID = '{B397FB16-A027-4D5B-88EB-FD9A2AA28D92}';
extern "C" const GUID CLSID_DVBViewerEvents = 
{ 0xB397FB16, 0xA027, 0x4D5B, { 0x88, 0xEB, 0xFD, 0x9A, 0x2A, 0xA2, 0x8D, 0x92 } };


interface IDVBViewerEvents : IUnknown
{
   //Desired functionality for Component
virtual void __stdcall OnChannelChange(int ChannelNr) = 0;
   virtual void __stdcall onRDS(const BSTR RDS) = 0; 
   virtual void __stdcall onOSDWindow(int WindowID) = 0; 
   virtual void __stdcall onDVBVClose() = 0;
   virtual void __stdcall onStartRecord(int ID) = 0;
   virtual void __stdcall onEndRecord() = 0;
   virtual void __stdcall onPlaybackstart() = 0;
   virtual void __stdcall OnPlaybackEnd() = 0;
   //virtual void __stdcall OnPlaystatechange(RendererType: TRendererTyp = 0; State: TPlaystates); dispid 209;
   virtual void __stdcall onAction(int ActionID) = 0; 
   virtual void __stdcall onPlaylist(const BSTR Filename) = 0; 
   virtual void __stdcall onAddRecord(int ID) = 0;
   //virtual void __stdcall onControlChange(WindowID: Integer; ControlID: Integer); dispid 213;
   virtual void __stdcall onSelectedItemChange() = 0;
} ;

 

und eine entsprechende Klasse davon abgeleitet, ist das der richtige Weg ?

 

Meine Dummy-Handler werden allerdings laut Debugger nicht angesprungen.

 

Hat jemand mal ein Stück Source, um zu zeigen wies geht ?

 

MfG,

Andreas

Link to comment
  • 1 month later...

Zum Thema COM-Events und C++ lest mal bitte diesen Thread, insbesondere die Posts von erwin.

 

http://www.DVBViewer.info/forum/index.php?showtopic=33691

 

Damit gehts. Benötigt wird Visual Studio Express.

 

Wird allerdings damit erkauft, dass das fertige Programm das .NET Framework benötigt.

 

Trotzdem, ich bin happy.

:tongue:

Link to comment

kann da nur zustimmen :tongue:

 

Es werden vom erwin beide Möglichkeiten schön erklärt (auch dbraner tut einiges dabei) und die Möglichkeiten mit dem DVBViewer zu spielen sind um einiges gestiegen !!

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...