Qt und Com Objekte



  • Hallo,

    Ich möchte unter Qt/Windows eine DVD brennen und nutze dazu die Imapi2. Das Brennen als solches funktioniert schon. Was mir fehlt ist die Fortschrittsanzeige. Diese wird laut MSDN durch DDiscFormat2DataEvents::Update bereitgestellt. Nun hab ich aber leider von Com keine Ahnung und weiß nicht wie ich das mit Qt verheiraten soll. Was ich schon gefunden hab ist QAxObject. Das soll nen ComWrapper darstellen. Aus der Qt-Doku werd ich aber auch noch nicht so recht schlau.

    Wie krieg ich nun so ein Update mit nem QAxObject verbunden?



  • DDiscFormat2DataEvents ist eine Schnittstelle, und die musst du implementieren. Weiß nicht, ob Qt dich dabei großartig unterstütz. Wir arbeiten normal direkt mit COM, ohne die Qt Wrapper.


  • Mod

    Wenn du das Update in einem anderen Thread bekommst, kannst du das per Signal in den Hauptthread/GUIThread übergeben, und dort entsprechend anzeigen.
    Sonst kannst du auch direkt das in der GUI setzen.



  • Ok soweit war ich auch schon. Nun dann muß ich wohl oder übel dann doch noch in die Com-Programmierung einarbeiten. Trotzdem danke.



  • So, ich hab jetzt mal den TEventHandler aus dem Projekt genommen: http://www.codeproject.com/Articles/9014/Understanding-COM-Event-Handling

    Meine Methode wird auch aufgerufen:

    HRESULT MainWindow::onBurnInvoke
    (
    	IBurnEventHandler* pEventHandler,
    	DISPID dispidMember, 
    	REFIID riid,
    	LCID lcid, 
    	WORD wFlags, 
    	DISPPARAMS* pdispparams, 
    	VARIANT* pvarResult,
    	EXCEPINFO* pexcepinfo, 
    	UINT* puArgErr
    )
    

    Nur wie komme ich jetzt an meine Argumente, die den Fortschritt enthalten?



  • Wer ruft deine Methode auf und was genua ist jetzt onBurnInvoke? Du wolltest doch eigentlich DDiscFormat2DataEvents::Update. Da bekommst du auch den Fortschritt als Parameter übergeben.



  • Will ich auch immer noch. So wie ich den TEventhandler aus dem Artikel verstanden hab ist das auch das Update. Zumindest wird onBurnInvoke genauso oft aufgerufen wie Update sollte und hat genauso viele Parameter in pdispparams. Achja und onBurnInvoke ist einfach nur der Name meiner Handlerfunktion. Vielleicht bin ich ja auf dem Holzweg, mal sehen.


Log in to reply